【问题标题】:Multiple Websites and PHP Versions with Docker-Compose使用 Docker-Compose 的多个网站和 PHP 版本
【发布时间】:2016-07-14 22:56:20
【问题描述】:

目前我正在构建自己的开发环境,因为我想摆脱 MAMP。

我使用 nginx 代理创建了一个 docker-compose 文件,它基本上可以正常工作。我的问题是,几个旧的 php 项目需要不同的 php 版本。

这是我在撰写文件方面的进展情况:

version: '2'
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

  project1:
    build: ./config/5.3.29/nginx/
    container_name: project1
    volumes:
        - ./project1/:/var/www/html
    links:
        - php-5.3.29:php        
    environment:
      - "VIRTUAL_HOST=project1.org"
    expose:
      - "8080"

  project2:
    build: ./config/5.6/nginx/
    container_name: project2
    volumes:
        - ./project2/:/var/www/html
    links:
        - php-5.6:php       
    environment:
      - "VIRTUAL_HOST=project2.de"
    expose:
      - "8081"

  php-5.3.29:
    build: ./config/5.3.29/php/
    container_name: php-5.3.29
    ports:
        - 9000:9000

  php-5.6:
    build: ./config/5.6/php/
    container_name: php-5.6
    ports:
        - 9001:9000

如您所见,我有两个项目。 PHP 容器需要从与项目相同的路径进行卷。有没有办法动态生成路径?项目 3 也将使用 php 5.6。

或者我是否使用了错误的方式去一般?最终将有大约 10 家 Magento 在线商店。

感谢您的帮助!

【问题讨论】:

标签: php nginx docker docker-compose


【解决方案1】:

您可以引用撰写文件上方的目录,例如 ../sites:/var/www/html 或类似的。如果您需要额外的逻辑来生成路径,不确定何时说“动态”。

一般来说,您的命名似乎有点过于具体,这对于初始工作站来说可能没问题,但随着事情开始发生变化,维护起来会更加困难。

【讨论】:

    【解决方案2】:

    感谢您的回答!

    今天我能够用这个 docker-compose 文件解决我的问题:

    version: '2'
    services:
      nginx:
        build: ./config/nginx/
        container_name: nginx
        volumes_from:
            - www_data
        links:
            - php-5.3.29
            - php-5.5
        ports:
          - 80:80
    
      php-5.3.29:
        build: ./config/5.3.29/
        container_name: php-5.3.29
        volumes_from:
            - www_data
    
      php-5.5:
        build: ./config/5.5/
        container_name: php-5.5
        volumes_from:
            - www_data
    
      php-5.6:
        build: ./config/5.6/
        container_name: php-5.6
        volumes_from:
            - www_data
    
      www_data:
        image: tianon/true
        volumes:
          - .:/var/www/html
    

    我删除了代理并使用 nginx 配置来处理不同的网站。然后我能够像这样包含不同的 php 版本:

    fastcgi_pass php-5.5:9000;
    

    【讨论】:

      猜你喜欢
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2016-05-26
      • 2017-09-07
      相关资源
      最近更新 更多