Я использую docker compose для создания nginx-прокси, а затем снова docker compose для подключения к нему нескольких веб-сайтов. Вроде бы все работает нормально, за исключением того, что все папки недоступны для записи. В этом примере я буду использовать сайт Joomla, но так бывает со всеми. Я использую пользователя root (Ubuntu Server 18.04), а владельцем файлов является root. Также кажется, что запуск «id» как на хост-компьютере, так и в контейнерах возвращает 0, который является моим корневым пользователем. Я в недоумении, как заставить его работать. Итак, для начала, вот прокси:
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:
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 возвращает тот же идентификатор, что и гостья. Пожалуйста, дайте мне ваши идеи, спасибо