Как настроить SSL с помощью docker-compose и github actions?

Я пытаюсь понять, как я могу настроить CI/CD для моего проекта Django, используя GitHub Actions и Docker compose. На данный момент тестирование работает, отправка образа на docker-hub тоже работает, как и развертывание на сервер. Почти все сделано, но теперь я совершенно не знаю, как заставить приложение работать с SSL на сервере. Оно должно работать именно по протоколу https. Я пытался использовать certbot, но, похоже, я застрял здесь

Это мой файл docker-compose

version: '3.8'

services:
  db:
    image: postgres:12.4
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    env_file:
      - .env
  web:
    image: madrider/yamdb_final
    restart: always
    volumes:
      - static_value:/code/static/
      - media_value:/code/media/
    depends_on:
      - db
    env_file:
      - .env
  nginx:
    image: nginx:1.19.3
    ports:
      - "80:80"
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
      - static_value:/var/html/static/
      - media_value:/var/html/media/
    depends_on:
      - web

volumes:
  static_value:
  media_value:

А это nginx/default.conf

server {
    listen 80;
    server_name 127.0.0.1;

    location /static/ {
        root /var/html/;
    }

    location /media/ {
        root /var/html/;
    }

    location / {
        proxy_pass http://web:8000;
    }
}

И, наконец, мой yml-файл действий на Github

name: Django-app workflow

on: [push]

jobs:
  tests:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: 3.8

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install flake8 pep8-naming flake8-broken-line flake8-return flake8-isort
        pip install -r requirements.txt

    - name: Test with flake8
      run: |
        python -m flake8

    - name: Test with pytest
      run: |
        pytest

  build_and_push_to_docker_hub:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    needs: tests
    steps:
      - name: Check out the repo
        uses: actions/checkout@v2
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to Docker
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: Push to Docker Hub
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: madrider/yamdb_final:latest

  deploy:
    runs-on: ubuntu-latest
    needs: build_and_push_to_docker_hub
    steps:
      - name: executing remote ssh commands to deploy
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USER }}
          key: ${{ secrets.SSH_KEY }}
          passphrase: ${{ secrets.PASSPHRASE }}
          script: |
            sudo docker pull madrider/yamdb_final
            sudo docker-compose stop
            sudo docker-compose rm web

            touch .env

            echo DB_ENGINE=${{ secrets.DB_ENGINE }} >> .env
            echo DB_NAME=${{ secrets.DB_NAME }} >> .env
            echo POSTGRES_USER=${{ secrets.POSTGRES_USER }} >> .env
            echo POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} >> .env
            echo DB_HOST=${{ secrets.DB_HOST }} >> .env
            echo DB_PORT=${{ secrets.DB_PORT }} >> .env

            echo SECRET_KEY=${{ secrets.SECRET_KEY }} >> .env
            echo DEBUG=${{ secrets.DEBUG }} >> .env
            echo ALLOWED_HOSTS=${{ secrets.ALLOWED_HOSTS }} >> .env

            sudo docker-compose up -d

  send_message:
    runs-on: ubuntu-latest
    needs: deploy
    steps:
      - name: send message
        uses: appleboy/telegram-action@master
        with:
          to: ${{ secrets.TELEGRAM_TO }}
          token: ${{ secrets.TELEGRAM_TOKEN }}
          message: ${{ github.workflow }} успешно выполнен!
Вернуться на верх