我有以下docker-compose.yml
文件来构建我的2项服务。它启动并运行完美。问题是,如果我在容器中执行一个ember命令,它会创建文件但是当我在VS代码中编辑它们并点击保存时,我会被拒绝许可。我怎样才能解决这个问题?
version: '3'
volumes:
ember-bower_components:
ember-node_modules:
services:
ember:
build: .
container_name: cf2-ember
ports:
- 7357:7357
- 4200:4200
- 9222:9222
- 49152:49152
volumes:
- .:/myapp
- ember-bower_components:/myapp/bower_components
- ember-node_modules:/myapp/node_modules
- ./docker/entrypoint.sh:/entrypoint.sh
tmpfs:
- /myapp/tmp
environment:
- APIM_HOST=CHANGEME
- APIM_SUBSCRIPTION_KEY=CHANGEME
command: ["sh", "/entrypoint.sh"]
nginx:
image: nginx:1.12.1-alpine
container_name: cf2-nginx
ports:
- 8081:8080
depends_on:
- ember
volumes:
- ./docker/default.template:/etc/nginx/conf.d/default.template
- ./dist:/usr/share/nginx/html:delegated
environment:
- SERVER_NAME=localhost
command: /bin/sh -c "envsubst < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
答案 0 :(得分:1)
docker run -u `id -u`:`id -g` <image name>
或者在您的情况下使用docker-compose
:
docker-compose run -u `id -u`:`id -g` <service name>
这使我能够以当前用户的身份在已安装卷上的容器内生成文件,而无需事后chown
。
使用-u
标志可以指定user:group
来运行容器。
答案 1 :(得分:0)
如果您不想以root用户以外的其他用户身份运行容器,则始终可以在目录上设置默认ACL,以便仍然可以访问文件。
在Linux上,它将与:
$ setfacl -Rdm u:myusername:rw ./dist