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 }}