![](/img/trans.png)
[英]Docker docker-entrypoint-initdb.d execute by defined order
[英]Docker entrypoint initdb PERMISSION DENIED
在将脚本复制到 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
您不应覆盖 postgres 图像入口点。 它旨在在/docker-entrypoint-initdb.d/
目录中查找.sql
文件(参见脚本中的行)。
您应该将.sql
文件挂载到/docker-entrypoint-initdb.d/
,并且应该在启动时进行处理(仅当数据库不存在时)
我有同样的问题,但是,我的问题是由于 Linux 用户而发生的。 我使用 root 作为运行程序,所以问题发生是因为本地计算机中的安装卷没有权限。 在这方面,我使用了chmod -R 777 scripts
并且效果很好。 从技术上讲,您需要为本地机器和容器设置权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.