|
8 | 8 | runs-on: ubuntu-latest |
9 | 9 |
|
10 | 10 | steps: |
| 11 | + # Step 1: Checkout the code |
11 | 12 | - name: Checkout Code |
12 | | - uses: actions/checkout@v3 |
| 13 | + uses: actions/checkout@v4 |
13 | 14 |
|
14 | | - - name: Set up Docker |
15 | | - uses: docker/setup-buildx-action@v2 |
16 | | - |
17 | | - - name: Build Docker Image |
| 15 | + # Step 2: Build the Docker image using Docker Compose |
| 16 | + - name: Build Docker Image with Docker Compose |
18 | 17 | run: | |
19 | | - docker build -t api-gateway:latest ./docker |
| 18 | + docker compose -f ./docker/docker-compose.yml build |
20 | 19 |
|
21 | | - - name: Save Docker Image |
| 20 | + # Step 3: Save and compress the Docker image |
| 21 | + - name: Save and Compress Docker Image |
22 | 22 | run: | |
23 | | - docker save api-gateway:latest | gzip > api-gateway.tar.gz |
| 23 | + docker save api-gateway:latest > api-gateway.tar.gz |
24 | 24 |
|
25 | | - - name: Copy Docker Image and Compose File to Droplet |
26 | | - |
| 25 | + # Step 4: Transfer compressed Docker image to the remote server |
| 26 | + - name: Transfer Docker Image to Droplet |
| 27 | + |
27 | 28 | with: |
28 | 29 | host: ${{ secrets.SSH_HOST }} |
29 | | - username: ${{ secrets.SSH_USER }} |
| 30 | + username: ${{ secrets.SSH_USERNAME }} |
30 | 31 | key: ${{ secrets.SSH_KEY }} |
31 | | - source: | |
32 | | - ./api-gateway.tar.gz |
33 | | - ./docker-compose.yml |
34 | | - target: /opt/api-gateway/ |
| 32 | + source: api-gateway.tar.gz |
| 33 | + target: /opt/summoners-sync/api-gateway |
35 | 34 |
|
36 | | - - name: Deploy with Docker Compose |
| 35 | + # Step 5: Load and run the Docker image on the remote server |
| 36 | + - name: Deploy Docker Image on Remote |
37 | 37 | |
38 | 38 | with: |
39 | 39 | host: ${{ secrets.SSH_HOST }} |
40 | 40 | username: ${{ secrets.SSH_USERNAME }} |
41 | 41 | key: ${{ secrets.SSH_KEY }} |
42 | 42 | script: | |
43 | | - cd /opt/api-gateway |
| 43 | + set -e |
44 | 44 |
|
45 | | - # Stop and remove old services |
46 | | - docker-compose down || true |
| 45 | + # Navigate to deployment directory |
| 46 | + cd /opt/summoners-sync/api-gateway |
| 47 | + |
| 48 | + # Stop and remove existing container if it exists |
| 49 | + docker stop api-gateway || true |
| 50 | + docker rm api-gateway || true |
| 51 | + docker rmi api-gateway || true |
47 | 52 |
|
48 | | - # Load the new Docker image |
49 | | - gunzip -c api-gateway.tar.gz | docker load |
| 53 | + # Load the Docker image |
| 54 | + docker load < api-gateway.tar.gz |
50 | 55 |
|
51 | | - # Start the service with the new image |
52 | | - docker-compose up -d |
| 56 | + # Run the new container |
| 57 | + docker run -d --name api-gateway --restart always api-gateway:latest |
0 commit comments