Я знаю, что я действительно близок к этому, но я не могу заставить последнюю часть работать. Я почти уверен, что это связано с контейнером WordPress и контейнером PHP, которые должны быть в одном каталоге? Так PHP может обрабатывать файлы в этом каталоге? Я работаю над этим в течение полутора недель, и я ломаю голову, прося о помощи.
Я могу большую часть этой рабочей и разных комбинаций - но не эту конкретную комбинацию.
Я пытаюсь создать отдельные контейнеры для MySQL (и совместно использовать базу данных) nginx -прокси WordPress с использованием Nginx (каждый сайт со своим собственным контейнером WordPress) PHP 7
Я получил эту работу с WordPress, используя Apache, но это не то, что я хочу.
Я много читал и много тестировал и обнаружил, что изначально мне не хватало VIRTUAL_PROTO = fastcgi , Я вижу конфиги, которые заполняются в контейнере прокси-сервера nginx ... они кажутся правильными, но я думаю, что моя путаница связана с путями и виртуальными средами.
Я создаю docker сеть создает nginx -proxy
Это файлы и каталоги, которые у меня есть ... /home/tj/db/docker-compose.yml /home/tj/mysite.com / home / tj / mysite .com / .env /home/tj/nginx-proxy/docker-compose.yml
/ home / tj / db / docker -compose.yml
version: "3"
services:
db:
image: mysql:5.7
volumes:
- ../_shared/db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
container_name: db
networks:
- nginx-proxy
networks:
nginx-proxy:
external:
name: nginx-proxy
/ home / tj / mysite.com / .env
MYSQL_SERVER_CONTAINER=db
VIRTUAL_HOST=mysite.com
DBIP="$(docker inspect ${MYSQL_SERVER_CONTAINER} | grep -i 'ipaddress' | grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])')"
EMAIL_ADDRESS=tj@mysite.com
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wordpress
/ home / tj / mysite.com / docker -compose.yml
version: "3"
services:
wordpress:
image: wordpress:fpm
expose:
- 80
restart: always
environment:
VIRTUAL_HOST: ${VIRTUAL_HOST}
LETSENCRYPT_HOST: ${VIRTUAL_HOST}
LETSENCRYPT_EMAIL: ${EMAIL_ADDRESS}
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: ${WORDPRESS_DB_USER}
WORDPRESS_DB_PASSWORD: ${WORDPRESS_DB_USER}
WORDPRESS_DB_NAME: ${WORDPRESS_DB_NAME}
VIRTUAL_PROTO: fastcgi
VIRTUAL_PORT: 3030
VIRTUAL_ROOT: /usr/share/nginx/html
container_name: ${VIRTUAL_HOST}
volumes:
- ../nginx-proxy/html:/usr/share/nginx/html:rw
networks:
default:
external:
name: nginx-proxy
/ home / tj / nginx -proxy / docker -compose.yml
version: '3'
services:
nginx:
image: nginx:1.17.7
container_name: nginx-proxy
ports:
- 80:80
- 443:443
volumes:
- conf:/etc/nginx/conf.d:ro
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- certs:/etc/nginx/certs
labels:
- com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true
restart: always
dockergen:
image: jwilder/docker-gen:0.7.3
container_name: nginx-proxy-gen
depends_on:
- nginx
command: -notify-sighup nginx-proxy -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
volumes:
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- certs:/etc/nginx/certs
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro
restart: always
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nginx-proxy-le
depends_on:
- nginx
- dockergen
environment:
NGINX_PROXY_CONTAINER: nginx-proxy
NGINX_DOCKER_GEN_CONTAINER: nginx-proxy-gen
volumes:
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- certs:/etc/nginx/certs
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: always
php-fpm:
image: php:7-fpm
container_name: php
environment:
- VIRTUAL_HOST=docker.nevistechnology.com
- VIRTUAL_ROOT=/usr/share/nginx/html
- VIRTUAL_PORT=9000
- VIRTUAL_PROTO=fastcgi
restart: always
ports:
- 9000
volumes:
- ./html:/usr/share/nginx/html
volumes:
conf:
vhost:
html:
certs:
networks:
default:
external:
name: nginx-proxy
Теперь я смог получить работу, если я использую «wordpress: latest» вместо «wordpress: fpm», но я не хочу использовать Nginx и Apache ... Apache использует много памяти, и у меня есть все мои старые конфиги и заметки в Nginx, поэтому я хотел бы, чтобы это работало .
У меня есть некоторые вещи из Dockerfile, которые я тоже пытаюсь выяснить - например, запуск команд, но позвольте мне посмотреть, сможете ли вы все помочь я с этим первым.
Другое дело - это скорее общая проблема c Linux, но за многие годы я так и не смог ее выяснить, и я просто по умолчанию использую root, что я знаю это плохая практика. Итак, у меня есть мой пользователь "tj", который я создал как:
sudo useradd tj sudo usermod -aG sudo tj sudo usermod -aG docker tj sudo usermod -aG www-data tj sudo g + w / home / tj -R *
Для Docker я начал работать с моим каталогом / home / tj. Когда я пытаюсь go отредактировать файл или загрузить файл, я получаю разрешение. Но если я изменяю каталоги и файлы с www-data:www-data
на tj:www-data or
tj:tj
, это работает для меня в SFTP или терминале, но тогда возникают проблемы с Интернетом, например, когда я пытаюсь загрузить - www-data
имеет проблемы с разрешением на sid WordPress.