docker:使用特定uid:gid运行mysql容器
我正在构建一个应用程序堆栈,mysql就是其中的一个服务。我希望所有服务都以uid 1000:1000的形式运行,这样我在主机系统上的权限就不会有任何问题 现在我在使用mysql docker的官方图像时遇到了问题 以下是我的工作:docker:使用特定uid:gid运行mysql容器,mysql,docker,docker-compose,Mysql,Docker,Docker Compose,我正在构建一个应用程序堆栈,mysql就是其中的一个服务。我希望所有服务都以uid 1000:1000的形式运行,这样我在主机系统上的权限就不会有任何问题 现在我在使用mysql docker的官方图像时遇到了问题 以下是我的工作: FROM mysql:5.7 RUN addgroup --gid 1000 app \ && adduser --gecos "" --home /home/app --shell /bin/bash --disabled-password --
FROM mysql:5.7
RUN addgroup --gid 1000 app \
&& adduser --gecos "" --home /home/app --shell /bin/bash --disabled-password --uid 1000 --gid 1000 app \
&& adduser app mysql \
&& adduser mysql app
RUN chown -R app:app /var/lib/mysql && chmod -R g+wrx /var/lib/mysql
COPY mysql.cnf /etc/mysql/conf.d/99-docker.cnf
COPY .my.cnf /home/app/.my.cnf
COPY .root.cnf /root/.my.cnf
RUN chmod 0664 /etc/mysql/conf.d/99-docker.cnf
USER app
EXPOSE 3306
以及我的撰写文件中的服务:
版本:“3”
服务:
mysql:
建造:
上下文:./docker/mysql
dockerfile:dockerfile
环境文件:
-环境署署长
卷数:
-./var/mysql:/var/lib/mysql
用户:1000:1000
端口:
- 3307:3306
命令:['mysqld','--character set server=utf8mb4','--collation server=utf8mb4\u unicode\u ci']
env文件包含mysql的一些变量:
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=app
MYSQL_USER=app
MYSQL_PASSWORD=app
.my.cnf文件包含凭据
mysql配置包含一些缓存设置、sql模式和:
[mysqld]
user=app
当使用以下命令启动服务时:docker compose-up--build mysql
i出现以下错误:
mysql_1 | Initializing database
mysql_1 | mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
mysql_1 | 2020-04-09T11:11:25.664285Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
mysql_1 | 2020-04-09T11:11:25.664345Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
mysql_1 | 2020-04-09T11:11:25.666725Z 0 [ERROR] --initialize specified but the data directory exists and is not writable. Aborting.
mysql_1 | 2020-04-09T11:11:25.666744Z 0 [ERROR] Aborting
mysql_1 |
pixel3_mysql_1 exited with code 1
当运行docker compose运行mysql bash
并检查我看到的文件时,/var/lib/mysql目录是root所有的
在文档()中,它说我可以与其他用户一起运行映像,但对我来说,这似乎是不可能的
我是否必须重写入口点来反复浏览目录,或者我的错误是什么?您链接到的图像文档建议您不需要自定义图像,只需要显示的
用户:
设置,数据目录才可以写入。运行股票mysql:5.7
image是否有效?(除了在my.cnf
中的备用用户设置之外,还有其他设置吗?)(并且,您是在Mac上还是以其他方式配置了用户名称空间重新映射?)您链接到的图像文档建议您不需要自定义图像,只需要显示的user:
设置,并且数据目录是可写的。运行股票mysql:5.7
image是否有效?(除了在my.cnf
中的备用用户设置之外,是否还有其他重要的设置?)(以及,您是在Mac上还是以其他方式配置了用户名称空间重新映射?)