Как я могу использовать официальный образ композитора в docker-compose? - PullRequest
3 голосов
/ 06 апреля 2019

Это мой файл docker-compose

version: '3'

services:
    app:
        image: php7.1-apache-stretch
        container_name: php-app
        volumes:
            - .:/var/www/html
        ports:
            - 8080:80
    composer:
        image: composer:1.8
        container_name: composer-app
        volumes:
            - .:/var/www/html

Однако, когда я запускаю docker-compose up, единственным работающим контейнером является php-app. Как я могу запустить composer в файле docker-compose и связаться с моим контейнером приложений?

1 Ответ

0 голосов
/ 07 апреля 2019

В идеале вы должны использовать образ Composer в многоступенчатой ​​сборке, чтобы избежать необходимости устанавливать его и все его зависимости на хосте.

Для этого создайте файл Docker следующим образом:

FROM composer:1.8 AS composer

FROM php:7.1-apache-stretch

COPY --from=composer /usr/bin/composer /usr/bin/composer

WORKDIR /app

COPY . .

# Place here your command that uses Composer
RUN composer install

Примечание: вам нужно просмотреть команду RUN, так как я не являюсь разработчиком PHP ....;)

Теперь docker-compose.yml выглядит примерно так:

version: "3"

services:
  app:
    build: .
    image: php-app:1.0
    container_name: "php-app"
    ports: 
      - "8080:80"

Вам больше не нужен том, так как файлы копируются в образ во время сборки.

Создайте образ и запустите службу:

docker-compose up --build -d
...