Как сделать docker -композитный файл из командной строки - PullRequest
0 голосов
/ 19 января 2020

Я запускаю свой контейнер с помощью пяти Docker команд следующим образом:

  • docker run --privileged -d -v /root/docker/data:/var/lib/mysql -p 8888:80 testimg:2 init
  • docker ps ---> чтобы получить идентификатор контейнера
  • docker exec -it container_id bash
  • docker exec container_id systemctl start mariadb
  • docker exec container_id systemctl start httpd

Я пытался выполнить эти шаги с помощью docker, но не получилось.

Может ли кто-нибудь создать docker -compose.yml или Dockerfile, чтобы получить тот же результат для меня?

1 Ответ

0 голосов
/ 19 января 2020

Вы не сможете сделать это только с помощью docker-compose.yml, потому что у составного файла нет механизма, подобного docker exec. Кроме того, запуск systemd (или вообще любого менеджера процессов) внутри контейнера является анти-паттерном. Это может усложнить управление и масштабирование ваших контейнеров и в большинстве случаев не дает вам никаких преимуществ.

Почему бы вам просто не иметь два изображения:

  • One который начинается mariadb
  • Тот, который начинается Apache httpd

Это может выглядеть примерно так:

version: "3"

services:
  web:
    image: httpd
    ports:
      - "8888:80"

  db:
    image: mariadb
    volumes:
      - "/root/docker/data:/var/lib/mysql"

Возможно, вам понадобится пользовательский изображение для веб-сервера, содержащее приложение, которое вы используете, но вы определенно можете использовать официальный образ mariadb для своей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...