我正在尝试设置一个mysql docker容器并执行init sql脚本。不幸的是SQL脚本没有执行。我究竟做错了什么?
version: '3.3' services: api: container_name: 'api' build: './api' ports: - target: 8080 published: 8888 protocol: tcp mode: host volumes: - './api:/go/src/app' depends_on: - 'mysql' mysql: image: 'mysql:latest' container_name: 'mysql' volumes: - ./db_data:/var/lib/mysql:rw - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql:ro restart: always environment: MYSQL_USER: test MYSQL_PASSWORD: test MYSQL_ROOT_PASSWORD: test MYSQL_DATABASE: test ports: - '3306:3306' volumes: db_data:
我执行文件 docker-compose up -d --build
docker-compose up -d --build
许多容器化的应用程序,尤其是有状态的应用程序,都有一种运行init脚本的方式(例如此处的sql脚本), 并且 它们只能运行 一次 。
init
并且由于它们是有状态的,因此对于容器是否init在容器重新启动时运行脚本而言,卷是事实的来源。
与您的情况类似,删除用于绑定安装的文件夹或使用新的命名卷应重新运行init存在的所有脚本。