我正在使用docker compose创建一个nginx代理,然后再次使用docker compose将多个网站附加到它。 除了所有文件夹不可写之外,其他所有内容似乎都正常运行。在此示例中,我将使用Joomla网站,但对于所有网站都是如此。我正在使用root用户(Ubuntu Server 18.04),文件的所有者是root。同样,在主机上和容器中都运行“ id”似乎返回0,这是我的root用户。我对如何使其工作感到困惑。 因此,首先,这里是代理:
docker network create nginx-proxy
和:
version: "3"
services:
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
default:
external:
name: nginx-proxy
对于网站:
version: '3'
services:
website-php-fpm:
build:
context: ./php-fpm
volumes:
- ../src:/var/www
website-nginx:
build:
context: ./nginx
volumes:
- ../src:/var/www
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/sites/:/etc/nginx/sites-available
- ./nginx/conf.d/:/etc/nginx/conf.d
depends_on:
- website-php-fpm
expose:
- 80
container_name: websitecom
environment:
VIRTUAL_HOST: website.com
website-database:
image: mysql:5.7
volumes:
- ../../databases/websiteDB:/var/lib/mysql
restart: always
environment:
- "MYSQL_ROOT_PASSWORD=superSecure"
- "MYSQL_DATABASE=mydb"
- "MYSQL_PASSWORD=mydbPass"
- "MYSQL_USER=myDBuser"
ports:
- "33062:3306"
website-phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- website-database
ports:
- '8182:80'
restart: always
environment:
PMA_HOST: website-database
PMA_PORT: 3306
networks:
default:
external:
name: nginx-proxy
php-fpm Dockerfile:
FROM php:7.1.30-fpm
RUN docker-php-ext-install mysqli pdo pdo_mysql
CMD ["php-fpm"]
EXPOSE 9000
和第二个nginx Dockerfile:
FROM nginx:alpine
RUN apk update && apk add bash
CMD ["nginx"]
EXPOSE 80 443
因此,总而言之,我的主要问题是./src(/ var / www)是不可写的,尽管所有文件和文件夹都具有正确的权限,它们都属于root:root,并且在id命令返回的容器内与主机相同的ID。 请给我您的见解,谢谢
答案 0 :(得分:0)
两天后,解决方案是:
RUN apk add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data
在php Docker中。