Windows上的Docker:如何运行多个网站(LAMP堆栈)?

时间:2019-03-03 21:31:35

标签: php windows apache docker docker-compose

我正在尝试使用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时会有冲突吗?是否可以不更改端口?

感谢您的回答!

0 个答案:

没有答案