Aviso: estou postando isso aqui porque as pessoas começaram a votar para fechar esta pergunta no SO como "fora do tópico". Embora algumas pessoas acreditem que as perguntas do Docker devem ser postadas no SO, em oposição ao SF, outras acreditam no contrário.
Eu tenho o seguinte arquivo docker-compose.yml
que executa nginx com suporte a PHP:
version: '3'
services:
nginx:
container_name: my-app-nginx
image: nginx:1.13.6
ports:
- 8080:80
volumes:
- ./nginx-default.conf:/etc/nginx/conf.d/default.conf
- ./my-app:/var/www/my-app
restart: always
depends_on:
- php
php:
container_name: my-app-php
image: php:7.1-fpm
volumes:
- ./my-app:/var/www/my-app
restart: always
O aplicativo PHP dentro de /var/www/my-app
precisa se comunicar com um daemon do Linux (vamos chamá-lo de myappd
).
Do jeito que eu vejo, eu preciso:
myappd
no contêiner nginx
para /usr/local/bin
, torne-o executável com chmod +x
e execute-o em segundo plano. myappd
para /usr/local/bin
, torne-o executável com chmod +x
e execute-o em primeiro plano. Agora, sou novo no Docker e estou pesquisando e aprendendo sobre isso, mas meu melhor palpite, já que estou usando o Docker Composer, é que a opção 2 é provavelmente a recomendada? Dado o meu conhecimento limitado sobre o Docker, eu teria que adivinhar que esse contêiner exigiria algum tipo de imagem baseada no Linux (como o Ubuntu ou algo assim) para executar este binário. Então talvez a opção 1 seja preferida? Ou talvez a opção 2 seja possível com uma imagem mínima do Ubuntu ou talvez seja possível sem essa imagem?
De qualquer forma, não tenho ideia de como eu implementaria isso no arquivo do compositor. Especialmente a opção 2, como o aplicativo PHP se comunica com o daemon em um contêiner diferente? Apenas "compartilhar" um volume (onde o binário está localizado) como eu fiz para serviços nginx / php seria suficiente? Ou algo mais é necessário?
Tags php nginx docker daemon docker-compose