Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker:使用特定uid:gid运行mysql容器_Mysql_Docker_Docker Compose - Fatal编程技术网

docker:使用特定uid:gid运行mysql容器

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 --

我正在构建一个应用程序堆栈,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 --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上还是以其他方式配置了用户名称空间重新映射?)