Skip to content

Commit e61f6eb

Browse files
Create docker-image.yml (#119)
* Create docker-image.yml * --ammend * Add docker file * Updates * New changes * fix(wip): docker deployment * feat(wip): attempt a new build * wip: use master version * feat(deliver): run only on merge --------- Co-authored-by: ceelogre <[email protected]>
1 parent 4dc27bb commit e61f6eb

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed

Diff for: .github/workflows/docker-image.yml

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: Docker Build and Deploy
2+
3+
on:
4+
push:
5+
branches:
6+
- develop
7+
8+
jobs:
9+
build-and-deploy:
10+
runs-on: ubuntu-latest
11+
env:
12+
MONGO_PROD_DB: ${{ secrets.MONGO_PROD_DB }}
13+
FRONTEND_LINK: "https://applications.devpulse.org"
14+
NODE_ENV: "production"
15+
PUSHER_CLUSTER: ${{ secrets.PUSHER_CLUSTER }}
16+
PUSHER_APP_ID: ${{ secrets.PUSHER_APP_ID }}
17+
PUSHER_APP_KEY: ${{ secrets.PUSHER_APP_KEY }}
18+
PUSHER_APP_SECRET: ${{ secrets.PUSHER_APP_SECRET }}
19+
DEVPULSE_EMAIL: ${{ secrets.DEVPULSE_EMAIL }}
20+
21+
22+
steps:
23+
- name: Checkout code
24+
uses: actions/checkout@v3
25+
26+
27+
- name: Build and push Docker image
28+
uses: mr-smithers-excellent/docker-build-push@v6
29+
with:
30+
image: ${{ secrets.DOCKER_HUB_USERNAME2 }}/atlp-devpulse-bn
31+
tags: latest
32+
registry: docker.io
33+
username: ${{ secrets.DOCKER_HUB_USERNAME2 }}
34+
password: ${{ secrets.DOCKER_HUB_PASSWORD2 }}
35+
buildArgs: 'NODE_ENV=production, MONGO_PROD_DB="${{ secrets.MONGO_PROD_DB }}"'
36+
37+
- name: Deploy to DigitalOcean
38+
uses: appleboy/ssh-action@master
39+
with:
40+
host: ${{ secrets.DO_HOST }}
41+
username: ${{ secrets.DO_USERNAME }}
42+
key: ${{ secrets.DO_KEY }}
43+
port: ${{ secrets.DO_PORT }}
44+
envs: MONGO_PROD_DB,REGISTER_FRONTEND_URL,REGISTER_ORG_FRONTEND_URL,NODE_ENV,FRONTEND_LINK,ADMIN_EMAIL,ADMIN_PASS,COORDINATOR_EMAIL,COORDINATOR_PASS,GH_TOKEN
45+
script: |
46+
echo "MONGO_PROD_DB=${MONGO_PROD_DB}" > env
47+
echo "FRONTEND_LINK=${FRONTEND_LINK}" >> env
48+
echo "NODE_ENV=${NODE_ENV}" >> env
49+
echo "PUSHER_CLUSTER=${PUSHER_CLUSTER}" >> env
50+
echo "PUSHER_APP_ID=${PUSHER_APP_ID}" >> env
51+
echo "PUSHER_APP_KEY=${PUSHER_APP_KEY}" >> env
52+
echo "PUSHER_APP_SECRET=${PUSHER_APP_SECRET}" >> env
53+
echo "DEVPULSE_EMAIL=${DEVPULSE_EMAIL}" >> env
54+
55+
# Pull the latest image
56+
docker pull ${{ secrets.DOCKER_HUB_USERNAME2 }}/atlp-devpulse-bn:latest
57+
58+
# Stop and remove existing container if it exists
59+
docker stop $(docker ps -q --filter publish=4008) || true
60+
docker rm $(docker ps -aq --filter publish=4008) || true
61+
62+
# Run new container
63+
docker run -d \
64+
-p 4008:3000 \
65+
--env-file env \
66+
${{ secrets.DOCKER_HUB_USERNAME2 }}/atlp-devpulse-bn:latest
67+
68+
# Clean up
69+
rm env

Diff for: Dockerfile

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM node:22-alpine
2+
WORKDIR /app
3+
COPY package*.json ./
4+
RUN npm install
5+
6+
COPY . .
7+
ARG NODE_ENV
8+
ARG MONGO_PROD_DB
9+
# RUN npm run seed
10+
RUN npm run build
11+
RUN npm prune --omit=dev
12+
EXPOSE 5000
13+
CMD ["node", "dist/index.js"]

0 commit comments

Comments
 (0)