Как развернуть докеризованное приложение на сервере с помощью CircleCI

Пытаюсь докеризировать свое приложение Django REST API, которое использует базу данных postgres, а также интегрировать CI/CD. Я потратил весь день на просмотр видео, чтение руководств и т.д. и все еще немного запутался, но чувствую, что уже близок.

Файл docker-compose.yml работает с использованием docker-compose up:

version: "3.9"
   
services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_NAME=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  server:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db

Я также могу push свой код на github и CircleCI запустит мои автоматизированные тесты:

version: 2.1

orbs:
  python: circleci/python@1.2

workflows:
  main:
    jobs:
      - build-and-test
      - deploy

jobs:
  build-and-test: 
    docker:
      - image: cimg/python:3.8
      - image: circleci/postgres:9.6.2-alpine
        environment:
          POSTGRES_USER: example
          POSTGRES_PASSWORD: example
          POSTGRES_DB: example
    steps:
      - checkout
      - python/install-packages:
          pkg-manager: pip 
      - run: sudo chown -R circleci:circleci /usr/local/bin
      - restore_cache:
          key: deps9-{{ .Branch }}-{{ checksum "requirements.txt" }}
      - run:
          name: Install Dependencies
          command: |
            pip install --user -r requirements.txt
      - save_cache:
          key: deps9-{{ .Branch }}-{{ checksum "requirements.txt" }}
          paths:
            - ".venv"
            - "/usr/local/bin"
            - "/usr/local/lib/python3.6/site-packages"
      - run:
          name: Run tests
          command: python manage.py test
      - store_test_results:
          path: test-results
      - store_artifacts:
          path: test-results
          destination: tr1
  deploy:
      docker:
        - image: circleci/python:3.7.3
      working_directory: ~/app
      steps:
        - checkout
        - run:
            name: Deploy
            command: |
              echo "Beep Beep"

Теперь мне нужно переместить/вытащить мои докеризированные приложения на сервер Linode, и я не уверен, как это сделать. Должен ли я пытаться использовать rsync так же, как я вручную проталкивал свой код? Что я должен толкать? Я полагаю, что поскольку CircleCI инициализирует push/pull, я должен подталкивать образы на сервер и запускать docker-compose там?

И последнее, все учебники, которые я вижу, помещают свои переменные env в файл docker-compose.yml - это безопасно? Это кажется очень небезопасным...

Я давно так не терялся, так что за советы буду благодарен!

Вернуться на верх