Да, вы должны запустить приложение и базу данных в отдельном контейнере.
Не совсем понятно, где указать внешнюю базу данных и имя сервера, это в файле .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 уже приведена в ссылке.