@frontendo

Какой правильный метод деплоя приложения в docker-контейнерах на vps?

Реализовал демо-приложение на 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, а также есть другие сторонние инструменты. Но Я мне кажется, что это все излишне для деплоя приложения на один сервак для демонстрации
  • Вопрос задан
  • 1289 просмотров
Пригласить эксперта
Ответы на вопрос 2
opium
@opium
Просто люблю качественно работать
Конечно излишне с учётом того что сварм и кубрнетес поддерживают до пяти тысяч серверов и хер знает сколько контейнеров это не ваш случай.
Ответ написан
Комментировать
@jar3b
Docker Swarm дает низкий оверхед и может быть запущен на одной машине очень легко. Есть смысл, если планируется увеличивать количество машин.
Другое дело, что автору и не нужен тут Swarm, если речь идет о деплое. Варианта я вижу 3:
1. Подключаемся по SSH, на сервере делаем git pull, потом docker-compose up -d, всё руками.
2. Используем docker-machine. Он работает как с docker stack, так и со старым compose. Инфы в интернете много, можно настроить автодеплой.
3. Использовать что-то вроде ansible, похоже на второй вариант, но более гибкое решение и дает настраивать сервер, если нужна специфическая конфигурация, допустим. Точно также, можно настроить авто-деплой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы