Dockerコンテナ起動時にno such service: mysqlとエラーが出てしまう場合

VPSサーバーなどの本番環境でdocker-compose upした時に

no such service: mysql

などのエラーが出て、コンテナを立ち上げることができない場合。

docker-compose.yml駄目な例

version: "3.9"
services:
  app:
    build: ./infra/php
    volumes:
      - ./backend:/work
  web:
    image: nginx:1.20-alpine
    ports:
      - 80:80
    volumes:
      - ./backend:/work
      - ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf
    working_dir: /work

  db:
    build: ./infra/mysql
    volumes:
      - db-store:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
    links:
      - mysql # ここがあかん
    ports:
      - 8081:80
    volumes:
      - /sessions

volumes:
  db-store:

↓docker-compose.ymlいい例

version: "3.9"
services:
  app:
    build: ./infra/php
    volumes:
      - ./backend:/work
  web:
    image: nginx:1.20-alpine
    ports:
      - 80:80
    volumes:
      - ./backend:/work
      - ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf
    working_dir: /work

  db:
    build: ./infra/mysql
    volumes:
      - db-store:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
    links:
      - db # こうしろ
    ports:
      - 8081:80
    volumes:
      - /sessions

volumes:
  db-store:

こんな風に修正したらローカル環境と同じように動くようになった。

別にこの部分を変えたからといって、ローカル環境でmysqlやphpmyadminが使えなくなるとかはなかった。

参考にした記事

ローカルにDocker環境を構築した時の記事↓

【超入門】20分でLaravel開発環境を爆速構築するDockerハンズオン - Qiita

本番環境にデプロイするときに見た記事↓

ConoHa VPSでDockerを使う。アプリケーションの公開も試してみます。 | ガジェラン

本番環境にうまくデプロイできなかったときに見た記事↓

Dockerコンテナ内でrails db:createすると、Unknown MySQL server host 'db' (-2)と出る。

本番環境

  • Conoha VPS 4Core 4GBプラン(アプリケーションからDockerプリインストールを選択)
  • OS:多分ubuntu
  • php8
  • Laravel8
Conoha Wing

爆速で表示されるこのブログのサーバーはConoha Wingです。
詳細は下記!!

おすすめの記事