【发布时间】:2021-02-16 18:12:16
【问题描述】:
【问题讨论】:
标签: sql postgresql docker docker-compose relational-database
【问题讨论】:
标签: sql postgresql docker docker-compose relational-database
我通过在将脚本复制到 docker-entrypoint-initdb.d 后将其添加到 Dockerfile 解决了这个问题
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/
Dockerfile 示例:
FROM mysql:latest
ENV MYSQL_DATABASE NAME_DATABASE
ENV MYSQL_ROOT_PASSWORD ***********
COPY ./sql-scripts/ /docker-entrypoint-initdb.d/
RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/
EXPOSE 3306
CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
下一步是构建镜像:
docker build -t image-db:latest .
下一步是创建容器
docker run -d -p 3306:3306 --name container-db image-db:latest
【讨论】:
chmod -R 777 /config/folder 即可解决问题。其中config/folder是mysql脚本所在的位置。
您不应覆盖 postgres 图像入口点。它旨在在/docker-entrypoint-initdb.d/ 目录中查找.sql 文件(参见line in script)。
您应该将您的.sql 文件挂载到/docker-entrypoint-initdb.d/ 并在启动时对其进行处理(仅当数据库不存在时)
【讨论】:
bash 的 alpine 图像。所以删除挂载shell脚本的卷,只需将.sql文件挂载到/docker-entrypoint-initdb.d/