Назад | Перейти на главную страницу

Как запустить демон linux в контейнере, связанном с другим контейнером с помощью docker-compose?

Отказ от ответственности: Я публикую это здесь, потому что люди начали голосовать, чтобы закрыть этот вопрос на SO как «не по теме». Хотя некоторые люди считают, что вопросы Docker следует публиковать в SO, а не в SF, другие верят в обратное.

У меня есть следующие docker-compose.yml файл, который запускает nginx с поддержкой 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

Приложение PHP внутри /var/www/my-app должен взаимодействовать с демоном Linux (назовем его myappd).

На мой взгляд, мне нужно либо:

  1. Скопируйте myappd в nginx контейнер для /usr/local/bin, сделайте его исполняемым с помощью chmod +x и запустите его в фоновом режиме.
  2. Создайте другой контейнер, скопируйте myappd к /usr/local/bin, сделайте его исполняемым с помощью chmod +x и запустите его на переднем плане.

Теперь я новичок в Docker, изучаю и изучаю его, но я предполагаю, учитывая, что я использую Docker Composer, этот вариант 2, вероятно, рекомендуется? Учитывая мои ограниченные знания о Docker, я должен был предположить, что этому контейнеру потребуется какой-то образ на основе Linux (например, Ubuntu или что-то в этом роде) для запуска этого двоичного файла. Так, может быть, предпочтительнее вариант 1? Или, может быть, вариант 2 возможен с минимальным образом Ubuntu или, может быть, без такого образа?

В любом случае, я понятия не имею, как мне реализовать это в файле композитора. В частности, вариант 2, как приложение PHP будет взаимодействовать с демоном в другом контейнере? Достаточно просто "совместного использования" тома (где находится двоичный файл), как я сделал для служб nginx / php? Или требуется что-то еще?