我正在尝试设置mysql docker容器并执行initsql脚本。不幸的是,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
2条答案
按热度按时间u7up0aaq1#
这个
docker-entrypoint-initdb.d
在创建(示例化)容器时,文件夹只运行一次,因此实际上您必须执行docker-compose down -v
为下次运行重新激活。如果你想随时添加sql文件,你可以在这里看一个专门的mysql docker镜像。。。http://ivo2u.nl/o4
ee7vknir2#
许多容器化应用程序,尤其是有状态的应用程序,都有一种运行方式
init
脚本(比如这里的sql脚本),它们应该只运行一次。而且由于卷是有状态的,因此对于容器来说,卷是是否运行
init
重新启动容器时是否显示脚本。与您的情况类似,删除用于绑定装载的文件夹或使用新的命名卷应该重新运行任何操作
init
存在脚本。