Запуск приложения в контейнерах Docker - PullRequest
0 голосов
/ 26 сентября 2019

Если кто-то может знать, должен ли он быть отдельным Dockerfile для базы данных и самой службы в случае, если вы хотите запустить приложение в контейнерах Docker?

Не совсем ясно, где указывать внешнюю базу данныхи имя сервера, это в файле .env?https://github.com/gurock/testrail-docker/blob/master/README.md http://docs.gurock.com/testrail-admin/installation-docker/migrating-upgrading-testrail

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Теоретически вы можете иметь приложение и базу данных, работающие в одном и том же контейнере, но это будет иметь непредвиденные последствия, например, если база данных падает из-за того, что приложение все еще работает, но докер не заметит, что база данных упалабольше, если он не знает об этом.

Когда вы запускаете базу данных в контейнере, вам нужно обратить внимание на постоянство данных, что означает, что данные выживут даже тогда, когда контейнер убит или удален, и если высоздайте контейнер снова, контейнер все еще будет иметь доступ к базам данных и другим данным.Вот хорошая статья, объясняющая тома в докере в контексте запуска mysql в своем собственном контейнере с томом для хранения данных: https://severalnines.com/database-blog/mysql-docker-containers-understanding-basics

В контексте репо, который вы связали, кажется, что есть отдельнаяDockerfile для базы данных, и у вас есть возможность выбрать использование Mariadb или MySQL, см. Здесь: https://github.com/gurock/testrail-docker/tree/master/Dockerfiles/testrail_mariadb

и здесь:

https://github.com/gurock/testrail-docker/tree/master/Dockerfiles/testrail_mysql

0 голосов
/ 26 сентября 2019

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

Не совсем понятно, где указать внешнюю базу данных и имя сервера, это в файле .env?

У вас есть две опции для задания переменной окружения

  • .env file
  • Переменные Envrionment

поместить файл .env вкорень вашего docker-compose и укажите это в вашем файле docker-compose.

services:
  api:
    image: 'node:6-alpine'
    env_file:
     - .env

Использование среды

    environment:
      MYSQL_USER:     "${DB_USER:-testrail}"
      MYSQL_PASSWORD: "${DB_PWD:-testrail}"
      MYSQL_DATABASE: "${DB_NAME:-testrail}"
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PWD:-my-secret-password}"
      MYSQL_ALLOW_EMPTY_PASSWORD: 'false'

должен ли он быть отдельным Dockerfile для базы данныхи обслуживание

Лучше использовать официальный образ базы данных, а для обслуживания вы можете настроить изображение, но предоставленная вами ссылка - лучший выбор для начала с docker-compose.yml .

Кроме того, документация docker-compose уже приведена в ссылке.

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