我有一个想在容器中运行的应用程序,还有一个想在容器中运行的数据库。数据库部分是这样实现的。
db:
image: mysql:5.7
ports:
- "3306:3306"
command: --init-file /SCHEMA.sql
restart: always
environment:
MYSQL_DATABASE: shapeshop
MYSQL_USER: admin
MYSQL_PASSWORD: admin
MYSQL_ROOT_PASSWORD: root
networks:
- backend
我的数据库的初始模式位于一个名为SCHEMA.sql的文件中,该文件与我的docker-compose文件位于同一目录中。
我正在使用
command --init-file
配置以设置数据库。
当我运行docker-compose up时,它会失败,并出现以下错误:
2021-05-14T08:20:59.320203Z 0 [ERROR] mysqld:未找到文件“/favicon. ico”(错误代码:2 -没有这样的文件或目录)
我的命令文件指定正确吗?
1条答案
按热度按时间cidc1ykv1#
正如大卫迷宫在评论中提到的,您必须将模式文件挂载到容器中。
那么这个命令--init只对容器中的文件系统有效吗?
是的
您还可以完全省略init命令,因为映像会自动将
.sql
转储加载到数据库中。从文档中:[...]它将执行在/docker-entrypoint-initdb. d中找到的扩展名为.sh、.sql和.sql.gz的文件。[...]你可以很容易地填充你的mysql服务,通过挂载一个SQL转储到那个目录[...]。
就像这样:
我还为
/var/lib/mysql
添加了一个卷,这样当您停止并删除容器时,数据将被持久化。