Как настроить 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 }} успешно выполнен!