Ent*_*rSB 15 docker docker-compose
docker-compose 使用基础 Dockerfile 创建应用程序映像。
Dockerfile 看起来与下面类似。由于某些原因省略了一些行。
FROM ubuntu:18.04
RUN set -e -x ;\
apt-get -y update ;\
apt-get -y upgrade ;
...
USER service
Run Code Online (Sandbox Code Playgroud)
在 docker-compose 中使用此映像并将命名卷添加到服务时,命名卷中的文件夹无法访问,并显示消息Permission denied。docker-compose 的部分如下所示。
FROM ubuntu:18.04
RUN set -e -x ;\
apt-get -y update ;\
apt-get -y upgrade ;
...
USER service
Run Code Online (Sandbox Code Playgroud)
我的假设是USER service线路有问题,我通过user: root在 myapp 服务中设置来确认这一点。
现在,下一个问题是。我想避免手动创建卷和设置权限。我希望使用 docker-compose 来自动化它。
这可能吗?如果可以,如何做到这一点?
Maf*_*for 14
是的,有一个技巧。并不是真正在 docker-compose 文件中,而是在 Docker 文件中。/var/log/myapp在切换用户之前,您需要创建文件夹并设置其权限service:
FROM ubuntu:18.04
RUN useradd myservice
RUN mkdir /var/log/myapp
RUN chown myservice:myservice /var/log/myapp
...
USER myservice:myservice
Run Code Online (Sandbox Code Playgroud)
Docker-compose 将保留权限。
请参阅Docker Compose 将命名卷专门安装为“root”
| 归档时间: |
|
| 查看次数: |
40089 次 |
| 最近记录: |