我正在尝试使用Docker设置本地环境以进行Web开发(LAMP堆栈)。
所有网站都位于名为“网站”的文件夹中,其结构如下:
/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
时会有冲突吗?是否可以不更改端口?
感谢您的回答!