自由気ままに書いちゃおう

好きなことをつらつらと・・・

【Docker】DockerComposeの注意点

以下の記事の続きです。

www.guri2o1667.work

今回は、DockerComposeを使う上での注意点を纏めています。

■自動的に付与される文字列について

過去の記事でDockerComposeを使って環境構築を行いましたが、
想定通りとはいえホスト名やボリューム名にPrefixやSuffixが自動的に付与されるのは管理しづらいです。

mysqldb , wpというコンテナ名を付ける気持ちでいても、
実際に出来上がったコンテナ名は
wp_mysqldb_1
wp_wp_1
というものです。

纏めると以下のような文字列が自動的に付与されます。

【コンテナ名】
プロジェクト名_サービス名_連番
※プロジェクト名については後述します。

【ボリューム名】
プロジェクト名_ボリューム名

【ネットワーク名】
プロジェクト名_ネットワーク名

■プロジェクト名について

デフォルトでは、docker-compose.yamlの格納先ディレクトリ名が利用されます。
もしくは、docker-composeコマンド実行時にpオプションを指定することで任意の名前を利用することができます。

f:id:guri2o1667:20210601154348p:plain

■解決策:すべてを指定する

コンテナ名やボリューム名を上記のような情報付加をせず指定するには、
全ての項目できちんとキーを指定致します。
※コメントをつけているので、少しはわかりやすくなっているかと。。。

version: "3.8"

services: 
  mysqldb:
    container_name: mysqldb # コンテナ名を指定
    image: mysql:5.7
    networks: 
      - wpnet
    volumes: 
      - db_volume:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: P@ssw0rd
      MYSQL_DATABASE: wpdb
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: P@ssw0rd

  wp:
    container_name: wp # コンテナ名を指定
    depends_on:
      - mysqldb
    image: wordpress
    networks:
      - wpnet
    ports: 
      - 8888:80
    restart: always
    environment: 
      WORDPRESS_DB_HOST: mysqldb
      WORDPRESS_DB_NAME: wpdb
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: P@ssw0rd

networks: 
  wpnet:
    name: wpnet # ネットワーク名

volumes:
  db_volume:
    name: db_volume # ボリューム名を指定


実行結果は以下の通りです。
※期待通りの名前になっています。

f:id:guri2o1667:20210601155228p:plain

以上です。