Я пытаюсь настроить локальную среду для веб-разработки (стек LAMP) с помощью Docker.
Все веб-сайты живут в папке с именами сайтов со следующей структурой:
/Sites
-- site1.local
-- www
-- site2.local
-- www
Для каждоговеб-сайт Мне нужна собственная версия PHP и MySQL.
До сих пор мне удавалось запустить один локальный веб-сайт с этим docker-compose.yml
(использует 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) Как сделать его доступным для домена домена, например, http://site1.local
вместо http://localhost:80
?Я слышал, что мне нужен прокси-сервер Nginx для этого (https://github.com/jwilder/nginx-proxy),, но я не могу понять, как настроить его с помощью Apache в моем случае.
2) Как настроить второй веб-сайт (http://site2.local
) таким же образом запустить его одновременно?Насколько я понимаю, мне нужно изменить все порты (80, 443 и 3306), в противном случае у меня возникнет конфликт при запуске docker-compose up -d
?Можно ли без смены портов?
Спасибо за ответы!