Как правильно размещать и запускать приложение с помощью docker compose, используя docker hub

Насколько я понимаю в docker hub можно заливать только образы, которые затем необходимо спулить, и можно запускать через docker run. А что делать, если у меня несколько образов, которые я запускаю через docker compose? У меня есть сайт на next.js и nginx. Есть такой docker-compose.yml

version: '3'

services:
  nextjs:
    build: ./
    networks:
      - site_network
  nginx:
    build: ./.docker/nginx
    ports:
      - 80:80
      - 443:443
    networks:
      - site_network
    volumes:
      - /etc/ssl/certs:/etc/ssl/certs:ro
    depends_on:
    - nextjs

networks:
  site_network:
    driver: bridge

Если я на сервере сделаю git clone репозитория, и сделаю docker-compose up --build -d, то всё работает. Я хочу автоматизировать всё через gitlab ci/cd. Нашёл статью, в которой описана процедура установки раннера на сервер + описание файла .gitlab-ci.yml, который создает образ, заливает его в docker hub, а затем на сервере его выкачивает и запускает с помощью docker run. Тут я вижу такой подход: в gitlab-ci.yml я делаю несколько образов, которые заливаю в хаб. Далее на сервер заливаю файл из репозитория docker-compose.yml, который будет иметь следующую структуру:

version: '3'

services:
  nextjs:
    image: registry.gitlab.com/path_to_project/next:latest
    networks:
      - site_network
  nginx:
    image: registry.gitlab.com/path_to_project/nginx:latest
    ports:
      - 80:80
      - 443:443
    networks:
      - site_network
    volumes:
      - /etc/ssl/certs:/etc/ssl/certs:ro
    depends_on:
    - nextjs

networks:
  site_network:
    driver: bridge

Насколько это правильный подход? Может быть есть более надёжный и лучший способ? Продвинутый стек (kubernetes и др.) пока не рассматриваю , хочу сначала выучить все основы, прежде чем двигаться дальше.


Ответы (0 шт):