Docker + jwilder / nginx -proxy + jwilder / docker -gen + jrcs / letsencrypt- nginx -proxy-companion + php: 7-fpm + wordpress: fpm - PullRequest
1 голос
/ 16 января 2020

Я знаю, что я действительно близок к этому, но я не могу заставить последнюю часть работать. Я почти уверен, что это связано с контейнером 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.

...