@Bone

Как переиспользовать сервис в docker-compose?

Здравствуйте! У меня есть такой фрагмент в docker-compose
php:
        build:
            context: "./docker/php/"
            args:
                TZ: ${TIMEZONE}
                UID: ${UID}
                GID: ${GID}
                DEBUG: ${APP_DEBUG}
        restart: unless-stopped
        volumes:
            - .:/var/www/html
Как легко понять, тут билдится php. Но я хочу еще один php сервис для запуска worker'а, который будет обрабатывать задачи из очереди. Сейчас я просто копирую весь фрагмент php и добавилю туда entrypoint и command.
php-worker:
        build:
            context: "./docker/php/"
            args:
                TZ: ${TIMEZONE}
                UID: ${UID}
                GID: ${GID}
                DEBUG: ${APP_DEBUG}
        restart: unless-stopped
        volumes:
            - .:/var/www/html
        entrypoint: ["php"]
        command: ["/var/www/html/artisan", "queue:work", "--queue=es"]
Подозреваю, что я делаю что-то неправильно и этого дублирования кода можно как-то избежать. Как сделать правильно?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
pxz
@pxz
✔ Совет: Вам помогли? Отметьте ответы решением.
Добрый день!

Можно так:
version: '3.9'

x-app:
  &php
  restart: always
  working_dir: /app
  environment:
    ...
  volumes:
    ...

app:
    <<: *php
    image: php8_fpm
    build:
      context: ./docker/fpm
      target: php8_fpm
      dockerfile: Dockerfile

queues:
    <<: *php
    image: php8_fpm
    command: php artisan horizon
    depends_on:
      - app
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы