2022-07-25 docker build中にVolumeの中身は参照することが出来ない / mysql dockerコンテナ起動時のスクリプト実行
docker build中にVolumeの中身は参照することが出来ない - Crieit
build 中にvolumeに何かしら書き込みてーなって思ったけどどうやらできないらしい。
volumeはdocker runの時初めてマウントされる。なので、volumeの中のファイルに依存したコマンドを実行したり、volumeの中に書き込むようなコマンドは、docker run以降にしないといけない。
なんでかというと、docker buildコマンドに-vオプションがないから。 https://docs.docker.com/engine/reference/commandline/build/
mysql dockerコンテナ起動時のスクリプト実行
【Docker】【MySQL】コンテナ初回起動時にスクリプトを実行させる
内容としては簡単で、コンテナ内の/docker-entrypoint-initdb.dに配置するだけで、.shや.sqlを実行してくれます。
services:
db:
image: mysql:8
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${ROOT_PASS}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASS}
TZ: ${TZ}
ports:
- ${DB_PORT}:3306
volumes:
- db-store:/var/lib/mysql
- ./conf/my.cnf:/etc/mysql/conf.d/my.cnf
# ★ ローカルのscriptディレクトリにマウントします
- ./script:/docker-entrypoint-initdb.d
volumes:
db-store: