Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有Docker Compose的多个网站和PHP版本_Php_Nginx_Docker_Docker Compose - Fatal编程技术网

具有Docker Compose的多个网站和PHP版本

具有Docker Compose的多个网站和PHP版本,php,nginx,docker,docker-compose,Php,Nginx,Docker,Docker Compose,目前,我正在构建自己的开发环境,因为我想摆脱MAMP 我用nginx代理创建了一个docker compose文件,它基本上可以正常工作。我的问题是,几个旧的php项目需要不同的php版本 以下是我在撰写文件方面取得的进展: version: '2' services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - "80:80" volum

目前,我正在构建自己的开发环境,因为我想摆脱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
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
如你所见,我有两个项目。PHP容器需要从与项目相同的路径创建卷。有没有办法动态生成路径?项目3也将使用PHP5.6

还是我用了一种错误的方式?最终将有大约10家Magento在线商店


谢谢你的帮助

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


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

谢谢您的回答

今天,我可以用这个docker compose文件解决我的问题:

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
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;
常见问题: