0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

1つのdocker-compose内で別コンテナを参照したいだけならコンテナ名の指定は不要なんですよって話

Posted at

非常に小さいことなんですが、タイトルのようなケースで別サービスから参照されるためだけ(たとえばアプリ用のコンテナからDBのコンテナを参照したい場合)にいちいちコンテナ名が指定されているケースが多く「いらないのだが……?」と、いつももやっとしているんですよね。

docker-compose.ymlでいえば

つまりこういう話です。

services:
  db:
    image: postgres:latest
    # container_name: mydb # <-これがいらない
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydatabase
    # ports:
    #   - "5432:5432" # <-実はこれもいらない(あくまでホストマシンに対する設定なので。多分)

  app:
    image: node:latest
    environment:
      DB_HOST: db # <- docker-composeのサービス名指定でOK。
      DB_USER: user
      DB_PASSWORD: password
      DB_NAME: mydatabase
    depends_on:
      - db
    volumes:
      - .:/app
    working_dir: /app

サンプルコード

ほんとかよ、と思うかたは以下のコードを使ってご確認ください。

余談:ネットワーク設定について

ネットワーク設定( networks )も接続に必須であるかのように言われている場合もやっとするのですが(※)、しかし接続に必須ではないのですがPJ管理上は絶対あったほうがいいので、そこは不要とはいいづらい。必要なんですよ。必要なんですけど、必要な理由は指定がないと接続できないから、ではないのです。

(※)ネットワークの指定がない場合はデフォルトのネットワークに接続されるので、指定しなくても接続できます。

上記のソースコードでネットワーク設定はdockder-compose.override.ymlで定義しておきましたので、ネットワーク設定についてもほんとかよ、と思うかたは、当該ファイルのファイル名・拡張子を変えるなどで無効化しておためしください。

謝辞

サンプルコードはほとんどGitHub Copilotが書いてくれました(^^)

Copilotがないともう開発無理無理ぃ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?