Я пытаюсь настроить приложение Node.js на несколько контейнеров Docker. Мое приложение в настоящее время находится на одной капельке Ubuntu DO и использует:
- Node.js(express 4)
- mysql для базы данных приложений
- redis для хранилища ключей.
- nginx для балансировки нагрузки и подачи статических файлов.
Мне нужно докерезировать разные части, по одному для каждого контейнера, а затем использовать Docker-Compose (ранее известный как рис.), чтобы просто описать различные контейнеры и установить связи между ними.
Я краду неясно о многоконтейнерной оценке.
Один для nginx
один для Node.js и моего экспресс-приложения
один для MySql
и один для Redis
Как будет выглядеть Docker-compose.yml? Я предполагаю, что nginx, mysql и redis будут неизмененными официальными изображениями? В то время как Node.js будет иметь директиву сборки, указывающую на файл Docker, который отмечает, что он основан на официальном изображении Node.js вместе с инструкциями по настройке? Мне нужно будет настроить/предоставить mysql и redis, например, значит ли это, что каждый должен быть отдельным с собственным Dockerfile?
Каким будет связь между контейнерами? использовать тома для копирования файлов в них, настройка портов, настройка файла hosts для сопоставления some.domain.com с nginx ip?
Затем мне понадобится установить глобально некоторые пакеты npm, такие как nodemon и PM2 и установить некоторые задания cron... (в контейнере Node.js?)
вот первый черновик, я был бы признателен за любую помощь, чтобы лучше понять эту новую настройку:
Докер-compose.yml
nginx:
image: nginx
links:
- "node"
node:
build: .
volumes:
- "app:/src/app"
ports:
- "3030:3000"
links:
- "db:mysql"
db:
image: mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=mypassword
Dockerfile
FROM node:0.12
RUN mkdir /src
RUN npm install nodemon pm2 -g
WORKDIR /src
ADD app/package.json /src/package.json
RUN npm install
ADD app/nodemon.json /src/nodemon.json
EXPOSE 3000
CMD npm start
Я использую этот простой проект в качестве базы, хотя мне нужно приложение