Memo

メモ > サーバ > 各論: Docker > プロジェクト名の指定

■プロジェクト名の指定
■プロジェクト名を指定しない場合の問題 例えば eccube4/code フォルダ内でECCubeを起動すると、以下のようになる つまり、フォルダ名である code をプレフィックスとして、各ボリュームが作られる
$ docker volume ls DRIVER VOLUME NAME local code_mailcatcher-data local code_mysql-database local code_node_modules local code_pg-database local code_var local code_vendor local docker_compose_mysql_data
コンテナ名も、フォルダ名である code をプレフィックスとして作られる
$ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------------------------ code_ec-cube_1 docker-php-entrypoint apac ... Up 0.0.0.0:443->443/tcp,:::443->443/tcp, 0.0.0.0:80->80/tcp,:::80->80/tcp code_mailcatcher_1 mailcatcher --no-quit --fo ... Up 0.0.0.0:1025->1025/tcp,:::1025->1025/tcp, 0.0.0.0:1080->1080/tcp,:::1080->1080/tcp code_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:13306->3306/tcp,:::13306->3306/tcp, 33060/tcp code_postgres_1 docker-entrypoint.sh postgres Up 0.0.0.0:15432->5432/tcp,:::15432->5432/tcp
この状態で例えば myshop/code 内で別案件用にECCubeを起動すると、 やはりプレフィックスは code になる つまり eccube4/code 内のECCubeと myshop/code 内のECCubeで、データベースなどは共通のものが参照されてしまう ■プロジェクト名の指定 dockerでプロジェクト名を指定する - Qiita https://qiita.com/reflet/items/b7b384d202a9f5514fb3 Docker Compose の -p オプションで VS Code でのコンテナ管理を便利にする / Twin Turbo Computing https://tt-computing.com/docker-project-vscode 通常以下のようにして起動するが、
$ docker-compose up -d
以下のようにして起動&終了すると、プロジェクト名を指定して起動できる (終了時も同様に指定する必要があるので注意)
$ docker-compose -p myshop up -d $ docker-compose -p myshop down
「-p プロジェクト名」もしくは「--project-name プロジェクト名」とする これで以下のように、プロジェクト名をプレフィックスとして各ボリュームが作成される
$ docker volume ls DRIVER VOLUME NAME local code_mailcatcher-data local code_mysql-database local code_node_modules local code_pg-database local code_var local code_vendor local docker_compose_mysql_data local myshop_mailcatcher-data local myshop_mysql-database local myshop_node_modules local myshop_pg-database local myshop_var local myshop_vendor
コンテナ名もプロジェクト名をプレフィックスとして作られるため、一例だが以下のように接続する
$ docker container exec -it myshop_ec-cube_1 bash $ docker container exec -it myshop_mysql_1 bash
ただし、DockerデスクトップをGUIで起動した場合など、プロジェクト名の指定が困難な場合がある また単純に、プロジェクト名を付け忘れると意図しない挙動になる可能性がある よってそもそもプロジェクト名を指定しなくてもいいように、 以下のように「docker-compose.yml はプロジェクトごとのフォルダ直下に置く」とするのが無難そうではある docker/project1/docker-compose.yml docker/project2/docker-compose.yml docker/project3/docker-compose.yml docker-compose.ymlはプロジェクトRoot直下に置くか、Dir名を工夫しよう | DevelopersIO https://dev.classmethod.jp/articles/docker-compose-yml-dir/

Advertisement