diff --git a/.github/workflows/docker-backend.yml b/.github/workflows/docker-backend.yml new file mode 100644 index 0000000..4f5aa4b --- /dev/null +++ b/.github/workflows/docker-backend.yml @@ -0,0 +1,50 @@ +name: Docker Build and Deploy Backend + +on: + push: + branches: + - main + workflow_dispatch: + +env: + IMAGE_NAME: xfox111/muicharts-backend + CONTAINER_NAME: muicharts-backend-1 + DOCKER_RUN_ARGS: -d -p 80:80 -p 443:443 -v ./muicharts-data:/persistence + CONTAINER_ARGS: 'HTTPS_PORTS=443 LettuceEncrypt:AcceptTermsOfService=true LettuceEncrypt:DomainNames:0=${{ secrets.REMOTE_HOST }} LettuceEncrypt:EmailAddress=${{ secrets.EFF_EMAIL }}' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Get the date + id: date + run: echo "::set-output name=date::$(date +'%Y%m%d')" + + - name: Build and push Docker image + uses: docker/build-push-action@v2 + with: + context: . + push: true + tags: ${{ env.IMAGE_NAME }}:${{ steps.date.outputs.date }} + + - name: Update container on remote SSH host + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.REMOTE_HOST }} + username: ${{ secrets.REMOTE_USER }} + key: ${{ secrets.SSH_PRIVATE_KEY }} + script: | + docker pull ${{ env.IMAGE_NAME }}:latest + docker stop ${{ env.CONTAINER_NAME }} + docker rm ${{ env.CONTAINER_NAME }} + docker run ${{ env.DOCKER_RUN_ARGS }} --name ${{ env.CONTAINER_NAME }} ${{ env.IMAGE_NAME }}:latest ${{ env.CONTAINER_ARGS }}