Size: a a a

RU.Docker — Официальное Русское Сообщество

2019 May 28

BQ

Bumin Qaghan in RU.Docker — Официальное Русское Сообщество
Nikita Rassamakhin
Всем привет 😊
Ребят такой вопрос, в докере крутится апликуха на PHP.
Для её полноценной работы надо поднять пару воркеров (php файлики запустить короче)
Схема примерно такая, есть веб морда, и есть очередь, в веб морде что-то сделали, это попало в очередь и воркеры должны разгребсти. В чем проблема. Без докера если, я бы воркеры запихал в супервизор, чтобы они жили всегда. А как правильно сделать сейчас, я хз.
Вот докер-композ
```
version: "3.3"
services:

 nginx:
   image: nginx
   restart: always
   
 php:
   build:
     ./docker/php
   restart: always
   
 mysql:
   image: mysql
   volumes:
   restart: always

 rabbit:
   image: rabbitmq
   restart: always
   
 redis:
   image: redis
   restart: always
```
Поднимать супервизор внутри php контейнера странно. А пилить еще один контейнер с теми же зависимостями что и первый тоже не круто. Как сделать?

Понравился подход https://github.com/mcuadros/ofelia но это крон, а не супервизор.
Вообщем толи лыжы не едут, толи я что-то туплю.
Предлагаю сделать один образ, но в компоуз сделать разные сервисы с разными командами
источник

L

LEXASOFT in RU.Docker — Официальное Русское Сообщество
php:
   build:
     ./docker/php
   restart: always
worker:
   build:
     ./docker/php
   restart: always
   command: php worker.php
источник

EK

Evgeniy Kuvshinov in RU.Docker — Официальное Русское Сообщество
используй target для вокрера и php
источник

L

LEXASOFT in RU.Docker — Официальное Русское Сообщество
ну либо так
источник

EK

Evgeniy Kuvshinov in RU.Docker — Официальное Русское Сообщество
а внутри уже FROM php as worker и тут фоновы задачи
источник

NR

Nikita Rassamakhin in RU.Docker — Официальное Русское Сообщество
Evgeniy Kuvshinov
используй target для вокрера и php
Хм, впервые вижу target, можно пример?
источник

EK

Evgeniy Kuvshinov in RU.Docker — Официальное Русское Сообщество
php:
   build:
     context: ./
     image: ./docker/php
     target: target1
   restart: always
worker:
   build:
     context: ./
     image:./docker/php
     target: target2
   restart: always
   command: php worker.php
источник

BQ

Bumin Qaghan in RU.Docker — Официальное Русское Сообщество
Evgeniy Kuvshinov
php:
   build:
     context: ./
     image: ./docker/php
     target: target1
   restart: always
worker:
   build:
     context: ./
     image:./docker/php
     target: target2
   restart: always
   command: php worker.php
Ух ты, не знал
источник

EK

Evgeniy Kuvshinov in RU.Docker — Официальное Русское Сообщество
внутри dockerfile
FROM php:fpm as target1
# php
FROM target1 as target2
# worker
источник

BQ

Bumin Qaghan in RU.Docker — Официальное Русское Сообщество
Evgeniy Kuvshinov
внутри dockerfile
FROM php:fpm as target1
# php
FROM target1 as target2
# worker
Спасибо!
источник

EK

Evgeniy Kuvshinov in RU.Docker — Официальное Русское Сообщество
Bumin Qaghan
Ух ты, не знал
источник

EK

Evgeniy Kuvshinov in RU.Docker — Официальное Русское Сообщество
там еще копировать между контейнерами можно
источник

EK

Evgeniy Kuvshinov in RU.Docker — Официальное Русское Сообщество
это для продакшена удобно
источник

EK

Evgeniy Kuvshinov in RU.Docker — Официальное Русское Сообщество
но у multi stage есть нюансы с кэшами и тд)
источник

BQ

Bumin Qaghan in RU.Docker — Официальное Русское Сообщество
Evgeniy Kuvshinov
там еще копировать между контейнерами можно
Это как?
источник

NR

Nikita Rassamakhin in RU.Docker — Официальное Русское Сообщество
О_О
источник

EK

Evgeniy Kuvshinov in RU.Docker — Официальное Русское Сообщество
Bumin Qaghan
Это как?
источник

NR

Nikita Rassamakhin in RU.Docker — Официальное Русское Сообщество
Крутая штука.
источник

NR

Nikita Rassamakhin in RU.Docker — Официальное Русское Сообщество
Спасибо однако, думаю ей и воспользуюсь
источник

BQ

Bumin Qaghan in RU.Docker — Официальное Русское Сообщество
Монстр какой-то )
источник