質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

2270閲覧

複数のdocker-compose.ymlにおいて、一方から他方のコンテナを利用するには?

NCC1701

総合スコア1680

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/02/17 04:40

編集2020/02/20 12:36

前提・実現したいこと

PostgreSQLのサービスをdocker-composeを利用して立ち上げます。
その上で、別のdocker-composeで立ち上げたWebアプリ(Ruby on Rails)から前記PostgreSQLを利用したいのですが、どのようにdocker-compose.ymlを書けばよいでしょうか?

発生している問題・エラーメッセージ

Creating my_db ... error ERROR: for my_db Cannot create container for service db: Conflict. The container name "/my_db" is already in use by container "a9...". You have to remove (or rename) that container to be able to reuse that name. ERROR: for db Cannot create container for service db: Conflict. The container name "/my_db" is already in use by container "98...". You have to remove (or rename) that container to be able to reuse that name. ERROR: Encountered errors while bringing up the project.

該当のソースコード

DB

1services: 2 db: 3 image: postgres:alpine 4 container_name: my_db 5 ports: 6 - 5432:5432 7 environment: 8 - TZ=Asia/Tokyo 9 - POSTGRES_USER=myuser 10 - POSTGRES_PASSWORD=mypass 11 networks: 12 mynet: 13 ipv4_address: 192.168.10.1 14 15networks: 16 mynet: 17 name: mynet 18 driver: bridge 19 ipam: 20 driver: default 21 config: 22 - subnet: 192.168.10.0/24

Web

1version: "3.5" 2 3services: 4 db: 5 image: postgres:alpine 6 container_name: my_db 7 external_links: 8 - db 9# ports: 10# - 5432:5432 11# environment: 12# - TZ=Asia/Tokyo 13# - POSTGRES_USER=myuser 14# - POSTGRES_PASSWORD=mypass 15# networks: 16# mynet: 17# ipv4_address: 192.168.10.1 18 19 web: 20 image: one 21 container_name: one 22 build: 23 context: ./ 24 dockerfile: Dockerfile 25 volumes: 26 - .:/home 27 command: /bin/sh 28 ports: 29 - 3000:3000 30 links: 31 - db 32 environment: 33 - DATABASE_HOST=db 34 - DATABASE_PORT=5432 35 - DATABASE_USER=seeeye 36 - DATABASE_PASSWORD=seeeye 37 networks: 38 - mynet 39 tty: true 40 41networks: 42 mynet: 43 external: true

DBのdocker-compose.ymlでは、ネットワークの設定とPostgreSQLのコンテナを立ち上げています。
Webのdocker-ompose.ymlでは、すでに立ち上がっているネットワークとDBコンテナを利用するつもりで、書きました。

試したこと

一つのdocker-compose.ymlではできていてエラーにはなりませんでした。訳あって二つのdocker-compose.ymlに分離したいのです。(ゆくゆくは他の独立したコンテナからDBを利用しようとしてます)

問題のないyml

dockercompose

1version: "3.5" 2 3services: 4 db: 5 image: postgres:alpine 6 container_name: my_db 7 ports: 8 - 5432:5432 9 environment: 10 - TZ=Asia/Tokyo 11 - POSTGRES_USER=myuser 12 - POSTGRES_PASSWORD=mypass 13 14 web: 15 image: one 16 container_name: one 17 build: 18 context: ./ 19 dockerfile: Dockerfile 20 command: /bin/sh 21 ports: 22 - 3000:3000 23 depends_on: 24 - db 25 links: 26 - db 27 environment: 28 - DATABASE_HOST=db 29 - DATABASE_PORT=5432 30 - DATABASE_USER=myuser 31 - DATABASE_PASSWORD=mypass 32 tty: true

補足情報(FW/ツールのバージョンなど)

docker-compose version 1.25.2, build 698e2846
Docker version 19.03.5, build 633a0ea

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

dockercompose

1version: "3.5" 2 3services: 4 web: 5 image: one 6 container_name: one 7 build: 8 context: ./ 9 dockerfile: Dockerfile 10 volumes: 11 - .:/home 12 command: /bin/sh 13 ports: 14 - 3000:3000 15 external_links: # ここがポイント 16 - db 17 environment: 18 - DATABASE_HOST=db 19 - DATABASE_PORT=5432 20 - DATABASE_USER=seeeye 21 - DATABASE_PASSWORD=seeeye 22 networks: 23 - shopnet 24 tty: true 25 26networks: 27 shopnet: 28 external: true

これでうまくいきました。

投稿2020/02/20 12:37

NCC1701

総合スコア1680

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

http://docs.docker.jp/compose/networking.html

既存のネットワークを使うには、externalキーワードを使うとあります。
具体的な利用方法は、「docker-compose network 共有」とか、「docker-compose network external」などでググると良さそうです。

投稿2020/02/17 05:41

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問