upstream backend {
server app_blue:3000;
server app_green:3000 backup;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
} jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build & push image
run: |
docker build -t myapp:green .
docker tag myapp:green registry/app:green
docker push registry/app:green
- name: Deploy green
run: ssh user@host 'docker-compose -f green.yml up -d'
- name: Health-check
run: curl -f http://host/healthz || exit 1
- name: Switch Nginx
run: ssh user@host 'cp nginx_green.conf nginx.conf && docker restart nginx'
- name: Remove blue
run: ssh user@host 'docker-compose -f blue.yml down' concurrency:
group: deploy
cancel-in-progress: true
Истории успеха
87 нравится