我正在使用Docker来作为PHP运行大型网站。问题在于,当我将主机卷链接到容器时,会出现权限错误。我知道可以运行
我的Dockerfile:
有没有什么办法可以处理主机卷权限?
chmod -R 777 /var/www
,但这不是有点危险吗?我的Dockerfile:
FROM php:7.0.3-apache
RUN docker-php-ext-install mysqli
RUN a2enmod rewrite
RUN a2enmod headers
RUN docker-php-ext-install pdo_mysql
RUN apt-get update -y && apt-get install -y sendmail libpng-dev
RUN apt-get update && \
apt-get install -y \
zlib1g-dev
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
RUN docker-php-ext-install mbstring
RUN docker-php-ext-install zip
RUN docker-php-ext-install gd
我的Docker-Compose.yml
version: "2"
services:
www:
build: .
ports:
- "80:80"
volumes:
- ./test.com:/var/www/
links:
- db
networks:
- default
db:
image: mysql:5.7
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
volumes:
- ./mysql:/var/lib/mysql
networks:
- default
有没有什么办法可以处理主机卷权限?
id -u
和id -g
获取PUID和GUID。而且你可以通过Dockerfile在容器内创建用户,就像这样:ARG PUID=1000
ARG PGID=1001
RUN groupadd -g $PGID customgrpoup && useradd -u $PUID -g customgrpoup -m customuser
现在,你应该使用新的customuser在容器内启动服务。此外,你还可以通过docker-compose文件将PUID和GUID作为环境变量传递。如果这样做,主机用户和Docker用户在文件系统中将是相同的。 - mr MaxSimka