繁体   English   中英

Docker 入口点 initdb 权限被拒绝

[英]Docker entrypoint initdb PERMISSION DENIED

运行 docker-compose 时出现以下错误:

在此处输入图像描述

非常感谢你的帮助

在将脚本复制到 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM