【问题标题】:Docker PHP Composer码头工人 PHP 作曲家
【发布时间】:2018-02-06 07:55:27
【问题描述】:

我有以下 docker-compose 文件,需要一些关于 PHP composer 部分的帮助,评论如下:

version: '3'
services:
  proxy:
    image: jwilder/nginx-proxy
    container_name: proxy
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - './certs:/etc/nginx/certs'
      - '/var/run/docker.sock:/tmp/docker.sock:ro'
    restart: always
  web:
    image: 'nginx:latest'
    container_name: nginx
    volumes:
      - './volume1:/volume1'
      - './volume2:/volume2'
      - './volume3:/volume3'
      - './site.conf:/etc/nginx/conf.d/site.conf'
    environment:
      - 'VIRTUAL_HOST=host1.local,host2.local,host3.local'
    restart: always
  php:
    build: .
    container_name: php
    volumes:
      - './volume1:/volume1'
      - './volume2:/volume2'
      - './volume3:/volume3'
    restart: always

  # Start How TODO this?
  composer:
    image: 'composer:latest'
    container_name: composer
    command: install
    volumes:
      - './volume1:/app'
      - './volume2:/app'
      - './volume3:/app'
  # End HOW TODO this?

  db:
    image: mariadb
    container_name: mariadb
    ports:
      - '3306:3306'
    environment:
      - MYSQL_ROOT_PASSWORD=toor
    volumes:
      - './db:/var/lib/mysql'
    restart: always
  pma:
    image: phpmyadmin/phpmyadmin
    container_name: pma
    environment:
      - PMA_ARBITRARY=1
      - 'PMA_ABSOLUTE_URI=https://pma.local/'
      - VIRTUAL_HOST=pma.local
    restart: always

我有多个需要使用 composer 的应用程序,但我无法覆盖 composer 容器内的 /app 文件夹。我应该在每个应用程序文件夹中写一个 Dockerfile 吗?我不想在 docker-compose 中指定 PHP 应用程序的完整路径,因为我可以拥有一个应用程序的多个版本(如 1.0、2.0、ecc.ecc。)。

【问题讨论】:

    标签: php docker composer-php docker-compose dockerfile


    【解决方案1】:

    与其将 Composer 配置放在 Docker Compose 文件中,不如在运行系统之前只需 run it once for each PHP app

    docker run --rm -v $(pwd)/volume1:/app composer:latest install
    

    这将运行 composer 并将目录绑定到您的主机文件系统,以便供应商文件夹可用。

    【讨论】:

    • 如何实现自动化?我应该为每个应用手动编写吗?
    • 是的,我将有一个在所有三个应用程序上运行 composer install 的“构建”步骤,然后是一个使用 docker-compose 启动应用程序的“运行”步骤。我倾向于编写 shell 脚本或 NPM 脚本来自动执行这些任务。
    猜你喜欢
    • 2017-11-12
    • 2022-07-18
    • 2016-01-18
    • 1970-01-01
    • 2012-10-06
    • 2021-12-20
    • 2015-06-13
    • 2016-12-14
    相关资源
    最近更新 更多