【发布时间】:2016-03-20 22:58:48
【问题描述】:
我通过本地 docker-machine VM 在 OSX 10.11 中运行 Docker 1.8.1。
我有以下 docker-compose.yml:
web:
build: docker/web
ports:
- 80:80
- 8080:8080
volumes:
- $PWD/cms:/srv/cms
我的 Dockerfile 看起来像这样:
FROM alpine
# install nginx and php
RUN apk add --update \
nginx \
php \
php-fpm \
php-pdo \
php-json \
php-openssl \
php-mysql \
php-pdo_mysql \
php-mcrypt \
php-ctype \
php-zlib \
supervisor \
wget \
curl \
&& rm -rf /var/cache/apk/*
RUN mkdir -p /etc/nginx && \
mkdir -p /etc/nginx/sites-enabled && \
mkdir -p /var/run/php-fpm && \
mkdir -p /var/log/supervisor && \
mkdir -p /srv/cms
RUN rm /etc/nginx/nginx.conf
ADD nginx.conf /etc/nginx/nginx.conf
ADD thunder.conf /etc/nginx/sites-enabled/thunder.conf
ADD nginx-supervisor.ini /etc/supervisor.d/nginx-supervisor.ini
WORKDIR "/srv/cms"
VOLUME "/srv/cms"
EXPOSE 80
EXPOSE 8080
EXPOSE 22
CMD ["/usr/bin/supervisord"]
当我使用docker-compose up 运行所有程序时,一切正常,我的卷安装在正确的位置。
但是挂载文件夹 /srv/cms 中的权限看起来不对。容器中用户为“1000”,组为“50”。网络服务器无法在此文件夹中创建任何文件,因为它以用户“root”运行。
【问题讨论】:
-
如果它以
root运行,那么它应该能够写入任何文件夹。您的主管配置是否指定了不同的用户?uid 1000和gid 50是您 OS X 上的用户吗?
标签: macos docker docker-compose docker-machine