@springrain1010

Docker-compose, Windows 10: несколько локальных сайтов?

Всем привет!

Пытаюсь настроить локальную среду разработки (LAMP), разбираюсь с Docker.

Все сайты у меня лежат в папке Sites с такой структурой:

/Sites
  -- site1.local
     -- www
  -- site2.local
     -- www


Для каждого сайта необходима свой версия PHP, MySQL и так далее.

Получилось написать такой docker-compose и запустить 1 сайт (используется php:7.1-apache):

version: "3"

services:
  webserver:
    build: 
      context: ./bin/webserver
    container_name: 'sp-webserver'
    restart: 'always'
    ports:
      - "80:80"
      - "443:443"
    links: 
      - mysql
    volumes: 
      - ${DOCUMENT_ROOT-./www}:/var/www/html
      - ${PHP_INI-./config/php/php.ini}:/usr/local/etc/php/php.ini
      - ${VHOSTS_DIR-./config/vhosts}:/etc/apache2/sites-enabled
      - ${LOG_DIR-./logs/apache2}:/var/log/apache2
  mysql:
    build: ./bin/mysql
    container_name: 'sp-mysql'
    restart: 'always'
    ports:
      - "3306:3306"
    volumes: 
      - ${MYSQL_DATA_DIR-./data/mysql}:/var/lib/mysql
      - ${MYSQL_LOG_DIR-./logs/mysql}:/var/log/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: sp-demo
      MYSQL_USER: sp-demo
      MYSQL_PASSWORD: sp-demo
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: 'rb-phpmyadmin'
    links:
      - mysql
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
    ports:
      - '8080:80'
    volumes: 
      - /sessions
  redis:
    container_name: 'rb-redis'
    image: redis:latest
    ports:
      - "6379:6379"


Сайт доступен по http://localhost:80

Вопросы:

1) Как сделать доступ к сайту по локальному домену? Например, site1.local вместо http://localhost:80. Слышал про https://github.com/jwilder/nginx-proxy, но не понимаю, как это настраивать с Apache в данном случае.
2) Как сделать то же самое для второго сайта (site2.local), чтобы запустить их одновременно? Я так понимаю, что нужно будет менять порты (80, 443 и 3306), иначе будет конфликт при docker-compose up -d? Возможно ли сделать это без смены портов?

Спасибо за ответы!
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Каждому сайту свой контейнер и рядом ещё один чисто под вебсервер, который по имени отправляет трафик на тот или иной бэкэнд
Ответ написан
Комментировать
YekitKsv
@YekitKsv
Developer
Вам можно выделить отдельную сеть и в хостовой машине в файле /etc/hosts прописать доменные имена.
Пример настройки: https://github.com/YekitKsv/docker-templates
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы