@CaptainJustness

Как запустить composer install внутри docker контейнера с сайтом?

Всем привет. Осваиваю docker и docker compose. Сделал такой конфиг:

version: '3.9'

services:
...
  php:
    image: php:7.4.3-apache
    network_mode: bridge
    expose:
      - 80
    environment:
      VIRTUAL_HOST: test.localhost
    volumes:
      - ./:/var/www/html
    depends_on:
      - mysql

  composer:
    image: composer
    network_mode: bridge
    volumes:
      - ./:/var/www/html
    working_dir: /var/www/html
    depends_on:
      - php
...

Что нужно дописать, чтобы я мог в терминале выполнять composer install и т.д.? Я видел, что подключение php выносят в отдельный php.dockerfile и там прописывают то, чтобы composer заработал. Мне такой вариант не нравится т.к. для этого нужно создавать доп. файлы. А я хочу добиться использование только одного файла docker-compose.yml.

Предполагаю, что в месте подключения php образа, нужно добавить какую-то команду/опцию для связки с composer, чтобы php понял, что он есть.

Буду очень признателен за разъяснение.
  • Вопрос задан
  • 904 просмотра
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka
Токсичный шарпист
Тебе нужно сделать Dockerfile для твоего php-приложения, в котором будет в отдельном шаге делаться composer install.

Запускать composer через docker-compose нет никакого смысла

Что-то типа (псевдокод, тк далёк от тематики PHP)
FROM composer as prepare
WORKDIR /app
COPY src/ ./src/
RUN composer install

FROM php as runtime
COPY --from=prepare /app/ /app/
WORKDIR /app
ENTRYPOINT <что там нужно как entrypoint вообще писать?>
Ответ написан
akelsey
@akelsey
пробуйте так:
composer:
    image: composer
    network_mode: bridge
    volumes:
      - ./:/var/www/html
    working_dir: /var/www/html
    entrypoint:
      - composer
      - install
    depends_on:
      - php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы