我正在尝试使用docker-compose为我的Web应用程序创建一个docker镜像。我的Web应用程序需要在文件系统上写入文件的权限。
我的Dockerfile包含如下内容
# some other stuff
RUN addgroup -S web && adduser -S -g web web
USER web
我想将当前.
目录挂载到Docker容器中的/code
目录;
当我执行docker-compose build
和docker-compose up
时,发现容器中的/code
目录所有者是“1000:1000”用户,而不是我在Dockerfile中创建的用户。
version: '2'
services:
admin:
build:
context: .
dockerfile: Dockerfile
command: python manage.py 0.0.0.0 8030
volumes:
- .:/code
ports:
- 9000:8030
stdin_open: true
tty: true
volumes:
.:
driver_opts:
o: uid=100,gid=65533
如您所见,我尝试使用我的用户UID和GID参数传递driver_opts,但没有帮助。
我的问题是:我应该怎么做才能将我的目录.
挂载到Docker容器中的/code
,并授予用户web
权限?
操作系统:Ubuntu 16.04
Docker版本17.09.0-ce
Docker-compose版本1.8.0
RUN addgroup -S web -g 1000 && adduser -u 1000 -G web -D web
。这解决了我的写入权限问题。但我仍然不清楚为什么我的卷总是由1000:1000
拥有,并且如何更改它。 - Ilya Boltnevid -u ${users}
命令,它将给出你的用户ID。Docker容器中的卷类似于访问主机文件系统,因此你在卷中具有与主机文件系统相同的用户ID。 - Tobske