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: