title: Deploy docker image from Github registry to Digital Ocean droplet using Github Actions
body: <p>My aim is to have continuous deployment of a nodejs-express application to my digital ocean droplet.</p>
  <p>I have a dockerized nodejs application, I am building an image and pushing the image into github packages registry. Now I want deploy this image into digital ocean droplet using github actions.</p>
  <p>How can  I do that?</p>
  <p>My current github action file is the following:</p>
  <pre><code>name: Docker
  
  on:
    push:
      # Publish `master` as Docker `latest` image.
      branches:
        - master
  
      # Publish `v1.2.3` tags as releases.
      tags:
        - v*
  
    # Run tests for any PRs.
    pull_request:
  
  env:
    # TODO: Change variable to your image's name.
    IMAGE_NAME: image
  
  jobs:
    # Run tests.
    # See also https://docs.docker.com/docker-hub/builds/automated-testing/
    test:
      runs-on: ubuntu-latest
  
      steps:
        - uses: actions/checkout@v2
  
        - name: Run tests
          run: |
            if [ -f docker-compose.test.yml ]; then
              docker-compose --file docker-compose.test.yml build
              docker-compose --file docker-compose.test.yml run sut
            else
              docker build . --file Dockerfile
            fi
    # Push image to GitHub Packages.
    # See also https://docs.docker.com/docker-hub/builds/
    push:
      # Ensure test job passes before pushing image.
      needs: test
  
      runs-on: ubuntu-latest
      if: github.event_name == 'push'
  
      steps:
        - uses: actions/checkout@v2
  
        - name: Build image
          run: docker build . --file Dockerfile --tag $IMAGE_NAME
  
        - name: Log into registry
          run: echo &quot;${{ secrets.GITHUB_TOKEN }}&quot; | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin
  
        - name: Push image
          run: |
            IMAGE_ID=docker.pkg.github.com/${{ github.repository }}/$IMAGE_NAME
            # Change all uppercase to lowercase
            IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
            # Strip git ref prefix from version
            VERSION=$(echo &quot;${{ github.ref }}&quot; | sed -e 's,.*/\(.*\),\1,')
            # Strip &quot;v&quot; prefix from tag name
            [[ &quot;${{ github.ref }}&quot; == &quot;refs/tags/&quot;* ]] &amp;&amp; VERSION=$(echo $VERSION | sed -e 's/^v//')
            # Use Docker `latest` tag convention
            [ &quot;$VERSION&quot; == &quot;master&quot; ] &amp;&amp; VERSION=latest
            echo IMAGE_ID=$IMAGE_ID
            echo VERSION=$VERSION
            docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
            docker push $IMAGE_ID:$VERSION
  </code></pre>
  <p>For SCP should the following code be fine? Please correct me if I am not using the correct file name variable here</p>
  <pre><code> copy: 
       # Ensure test job passes before pushing image.
       needs: push
       runs-on: ubuntu-latest
       steps:
          - uses: actions/checkout@v2
          - name: Copy file via scp
            uses: appleboy/scp-action@master
            env:
              HOST: ${{ secrets.HOST }}
              USERNAME: ${{ secrets.USERNAME }}
              PORT: ${{ secrets.PORT }}
              KEY: ${{ secrets.SSHKEY }}
            with:
              source: &quot;$IMAGE_NAME&quot;
              target: &quot;/usr/images/&quot;
  ``
  </code></pre>