以下の記事の続きです。
今回は、DockerComposeを使う上での注意点を纏めています。
■自動的に付与される文字列について
過去の記事でDockerComposeを使って環境構築を行いましたが、
想定通りとはいえホスト名やボリューム名にPrefixやSuffixが自動的に付与されるのは管理しづらいです。
mysqldb , wpというコンテナ名を付ける気持ちでいても、
実際に出来上がったコンテナ名は
wp_mysqldb_1
wp_wp_1
というものです。
纏めると以下のような文字列が自動的に付与されます。
【コンテナ名】
プロジェクト名_サービス名_連番
※プロジェクト名については後述します。
【ボリューム名】
プロジェクト名_ボリューム名
【ネットワーク名】
プロジェクト名_ネットワーク名
■プロジェクト名について
デフォルトでは、docker-compose.yamlの格納先ディレクトリ名が利用されます。
もしくは、docker-composeコマンド実行時にpオプションを指定することで任意の名前を利用することができます。
■解決策:すべてを指定する
コンテナ名やボリューム名を上記のような情報付加をせず指定するには、
全ての項目できちんとキーを指定致します。
※コメントをつけているので、少しはわかりやすくなっているかと。。。
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 # ボリューム名を指定
実行結果は以下の通りです。
※期待通りの名前になっています。
以上です。