Dockerは初めてで、作成したデータボリュームの名前を設定する方法を見つけようとしています。現在、ディレクトリは/ var/libs/dockerの下に長いハッシュとして自動的に名前が付けられていますが、これはユーザーフレンドリーとはほど遠いものです。
ここに示すように、MODXの開発環境をセットアップしようとしています: https://github.com/modxcms/docker-modx
現在、私のdocker-compose.ymlファイルは次のとおりです。
web:
image: modx
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
myadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8080:8080
これは完全に機能しますが、IDEで直接編集するデータボリュームに名前を付ける方法がわかりません。
(副次的な質問として、/ var/libs/dockerの下に作成する必要がありますか?それとも、ホームフォルダー内のディレクトリに設定する方法はありますか?)
更新:@ julianoの助けを借りて、docker-compose.ymlファイルを次のように更新しました:
version: '2'
services:
web:
image: modx
volumes:
- html:/home/muzzstick/dev/modxdev
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
myadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8080:8080
volumes:
html:
external: false
残念ながら、これによりWebコンテナの実行が停止するようです。 dbおよびmyadminコンテナーは、正常に実行されていることを示しています。エラーはありませんでした...docker start docker_web_1
と入力すると、開始したように見えますが、docker ps -a
は、開始するとすぐに終了したことを示しています。
アップデート2
docker-compose up -d
の実行は、問題なく実行されているようです。ただし、以下に示すように、Webコンテナは作成されるとすぐに終了します。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1dd6d8ac94e modx "/entrypoint.sh apach" 10 seconds ago Exited (1) 5 seconds ago docker_web_1
ee812ae858dc phpmyadmin/phpmyadmin "/run.sh phpmyadmin" 10 seconds ago Up 5 seconds 80/tcp, 0.0.0.0:8080->8080/tcp docker_myadmin_1
db496134e0cf mysql "docker-entrypoint.sh" 11 seconds ago Up 10 seconds 0.0.0.0:3306->3306/tcp docker_db_1
更新3OKこのコンテナのエラーログには次のように表示されます。
error: missing MODX_DB_Host and MYSQL_PORT_3306_TCP environment variables
Did you forget to --link some_mysql_container:mysql or set an external db
with -e MODX_DB_Host=hostname:port?
このエラーの原因は https://github.com/modxcms/docker-modx/blob/master/Apache/docker-entrypoint.sh#L15-L2 のようです。
Docker-composeバージョン2ではリンクの処理が異なるようなものでしょうか?
作成ファイルのバージョン2 を使用して名前付きデータボリュームを作成するには、分離された領域があります。
version: '2'
services:
db:
image: postgres
volumes:
- amazingvolume:/var/lib/postgresql/data
volumes:
amazingvolume:
external: true
したがって、ボリューム名(amazingvolume)を定義できます。それが 外部かどうか の場合、サービス(この例ではdb)の下で、マウントするディレクトリを定義できます。
Dockerのドキュメントで、ホストされているマウント済みボリュームを検索するだけです。
version: '2'
services:
web:
image: modx
environment:
- MYSQL_PORT_3306_TCP=3306
- MODX_DB_Host=mysql:3306
volumes:
- /home/muzzstick/dev/modxdev/html:/var/www/html
links:
- db:mysql
ports:
- 80:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
myadmin:
image: phpmyadmin/phpmyadmin
links:
- db:db
ports:
- 8080:8080
変化する /var/www/html
htmlファイルがコンテナ内にあるディレクトリに移動します。また、ホストの左側にディレクトリを作成し、すべてのユーザーに読み取り権限を付与します。
よろしく