2017-02-22 41 views
3

我需要用兩個容器運行docker-compose, - php-fpm和php-cli。雖然我需要另一個容器與作曲家。 這裏是我的搬運工,compose.yml文件:如何使用php-fpm和php-cli運行docker-compose?

version: '2' 
services: 
nginx: 
    container_name: travellizy_nginx 
    build: ./docker/nginx 
    restart: always 
    #ports: 
    # - "8080:80" 
    volumes: 
     - ./api:/api 
     - ./docker/nginx/nginx.conf:/etc/nginx/conf.d/site.conf 
     - ./docker/nginx/log:/var/log/nginx 
    links: 
     - php 
     - mysql 
    networks: 
     travelnet: 
      ipv4_address: 172.27.0.101 

php: 
    container_name: travellizy_php 
    build: ./docker/php 
    restart: always 
    volumes: 
     - ./api:/api 
     - ./docker/php/php.ini:/usr/local/etc/php/conf.d/php.ini 
     - ./docker/php/php-fpm.conf:/usr/local/etc/php-fpm.d/php-fpm.conf 
     - ./docker/php/log:/var/log/php 

    links: 
     - mysql 
    networks: 
     travelnet: 
      ipv4_address: 172.27.0.118 

php-cli: 
    container_name: travellizy_php_cli 
    build: ./docker/php-cli 
    restart: always 
    volumes_from: 
     - php 
    ports: 
     - "9005:9000" 
    links: 
     - mysql 
    networks: 
     travelnet: 
      ipv4_address: 172.27.0.119 

composer: 
    container_name: travellizy_composer 
    build: ./docker/composer 
    working_dir: /api 
    volumes: 
     - ./api:/api 
    networks: 
     travelnet: 
      ipv4_address: 172.27.0.120 

mysql: 
    container_name: travellizy_db_mysql 
    build: ./docker/db/mysql 
    restart: always 
    ports: 
     - "3306:3306" 
    environment: 
     MYSQL_ROOT_PASSWORD: travellizy 
     MYSQL_DATABASE: travellizy 
     MYSQL_USER: travellizy 
     MYSQL_PASSWORD: travellizy 
    volumes: 
     - ./docker/db/mysql/my.cnf:/etc/mysql/conf.d/my.cnf 
     - ./docker/db/mysql/log:/var/log/mysql 
    networks: 
     travelnet: 
      ipv4_address: 172.27.0.135 

networks: 
travelnet: 
    driver: bridge 
    ipam: 
     config: 
      - subnet: 172.27.0.0/24 

當我跑碼頭工人,組成了-d - 用php-CLI容器變得總是重啓和作曲家容器剛剛停止。

+0

你爲什麼使用重啓:總是在php中?你爲什麼不在「travellizy_php」中運行作曲家? – ivoba

回答

6

PHP cli未在守護進程模式下運行。你運行它,然後停止。接下來,Docker會嘗試重新啓動它(您已經爲php-cli設置了restart: always策略)。 :)

IMO php-clicomposer服務是多餘的。您可以使用php服務滿足您的需求。只需運行docker-compose run php php [path to script]