diff --git a/.github/workflows/ec2-deploy.yml b/.github/workflows/ec2-deploy.yml new file mode 100644 index 0000000..111f5be --- /dev/null +++ b/.github/workflows/ec2-deploy.yml @@ -0,0 +1,54 @@ +name: Build on DockerHub and Deploy to AWS +on: + push: + branches: + - main +env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + AWS_PRIVATE_KEY: ${{ secrets.AWS_PRIVATE_KEY }} +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push Docker image + uses: docker/build-push-action@v2 + with: + context: ./ + push: true + dockerfile: ./Dockerfile + tags: ramyshurafa/strapi:latest + deploy: + needs: build + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ env.DOCKERHUB_USERNAME }} + password: ${{ env.DOCKERHUB_TOKEN }} + - name: Set permissions for private key + run: | + echo "${{ env.AWS_PRIVATE_KEY }}" > key.pem + chmod 600 key.pem + - name: Pull Docker image + run: | + ssh -o StrictHostKeyChecking=no -i key.pem ${{ env.VM_IP }} 'docker pull ramyshurafa/strapi:latest' + - name: Stop running container + run: | + ssh -o StrictHostKeyChecking=no -i key.pem ${{ env.VM_IP }} 'docker stop strapi || true' + ssh -o StrictHostKeyChecking=no -i key.pem ${{ env.VM_IP }} 'docker rm strapi || true' + - name: Run new container + run: | + ssh -o StrictHostKeyChecking=no -i key.pem ${{ env.VM_IP }} 'docker run -d --name strapi -p 80:3000 ramyshurafa/strapi:latest'