Реализовал демо-приложение на nodejs, потом когда пришел момент выкатки его на сервер, решил использовать docker
создал конфигурационный файл
version: "3"
services:
nginx:
image: nginx:1.13-alpine
restart: always
ports:
- "80:80"
depends_on:
- node
links:
- "node"
volumes:
- "./nginx:/etc/nginx/conf.d"
- "./static:/var/www/static"
node:
build:
context: ./server
dockerfile: Dockerfile
volumes:
- ./server:/var/www/server
- ./static:/var/www/static
- ./logs:/var/www/logs
depends_on:
- db
- redis
links:
- "db"
- "redis"
command: pm2-docker start /var/www/server/run.json --no-auto-exit
environment:
SQL_HOST: db
SQL_USER: postgres
SQL_PASSWORD: postgres
SQL_DB: postgres
REDIS_HOST: redis
db:
image: postgres:10-alpine
volumes:
- "./server:/var/www/server"
- "./pg:/var/www/pgdata"
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
PGDATA: /var/www/pgdata
redis:
image: redis:4-alpine
volumes:
- ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
Теперь не могу найти внятного пояснения, как в моем случае лучше произвести деплой. Думал, добавить контейнер для nodejs на докерхаб и просто запустить команду docker-compose на серваке точно так, как я это делаю сейчас у себя на компе. Но погуглил, оказывается для развертывания люди используют дополнительные инструменты. В документации например предлагается Docker Swarm, Docker Cloud Agent, а также есть другие сторонние инструменты. Но Я мне кажется, что это все излишне для деплоя приложения на один сервак для демонстрации