Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Docker Image CI

on:
push:
branches: ["master" ]
pull_request:
branches: ["master"]

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Docker Checkout
uses: actions/checkout@v3

- name: Docker Login
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build and Push
env:
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_DB: ${{ secrets.POSTGRES_DB }}
NEXT_PORT: ${{ secrets.NEXT_PORT }}
DB_NAME: ${{ secrets.DB_NAME }}
HOME: ${{ secrets.HOME }}
SERVER_PORT: ${{ secrets.SERVER_PORT }}
AUTH0_SECRET: ${{ secrets.AUTH0_SECRET }}
AUTH0_BASE_URL: ${{ secrets.AUTH0_BASE_URL }}
AUTH0_ISSUER_BASE_URL: ${{ secrets.AUTH0_ISSUER_BASE_URL }}
AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }}
AUTH0_CLIENT_SECRET: ${{ secrets.AUTH0_CLIENT_SECRET }}
LOCAL_DATABASE_URL: ${{ secrets.LOCAL_DATABASE_URL }}
REMOTE_DATABASE_URL: ${{ secrets.REMOTE_DATABASE_URL }}
run: |
docker compose build
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker compose push

- name: copy file via ssh password
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.AWS_HOST }}
username: ${{ secrets.AWS_USERNAME }}
key: ${{ secrets.AWS_KEYPAIR }}
source: "docker-compose.yaml"
target: "/home/ubuntu/"

- name: SSH to AWS Instance and Pull Image
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.AWS_HOST }}
username: ${{ secrets.AWS_USERNAME }}
key: ${{ secrets.AWS_KEYPAIR }}
script: |
touch .env
echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" > .env
echo "POSTGRES_USER=${{ secrets.POSTGRES_USER }}" >> .env
echo "POSTGRES_DB=${{ secrets.POSTGRES_DB }}" >> .env
echo "NEXT_PORT=${{ secrets.NEXT_PORT }}" >> .env
echo "DB_NAME=${{ secrets.DB_NAME }}" >> .env
echo "HOME=${{ secrets.HOME }}" >> .env
echo "SERVER_PORT=${{ secrets.SERVER_PORT }}" >> .env
echo "AUTH0_SECRET=${{ secrets.AUTH0_SECRET }}" >> .env
echo "AUTH0_BASE_URL=http://ec2-13-233-97-162.ap-south-1.compute.amazonaws.com:3000" >> .env
echo "AUTH0_ISSUER_BASE_URL=${{ secrets.AUTH0_ISSUER_BASE_URL }}" >> .env
echo "AUTH0_CLIENT_ID=${{ secrets.AUTH0_CLIENT_ID }}" >> .env
echo "AUTH0_CLIENT_SECRET=${{ secrets.AUTH0_CLIENT_SECRET }}" >> .env
echo "LOCAL_DATABASE_URL=${{ secrets.LOCAL_DATABASE_URL }}" >> .env
echo "REMOTE_DATABASE_URL=${{ secrets.REMOTE_DATABASE_URL }}" >> .env
sudo docker compose down --rmi all --volumes || true
sudo docker compose pull
sudo docker compose down || true
sudo docker compose up -d
16 changes: 13 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
FROM node:latest
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json ./
RUN npm install

COPY . .
RUN npx prisma generate
RUN npm run build
RUN npm prune --production
# --omit=dev


FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/package.json ./package.json
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
EXPOSE 3000
RUN npx prisma generate
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ You can start editing the page by modifying `app/page.tsx`. The page auto-update

This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.

## Learn More
## Learn More

To learn more about Next.js, take a look at the following resources:

Expand Down
31 changes: 19 additions & 12 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
version: "3.0"
services:
postgresdb:
image: postgres
Expand All @@ -12,35 +11,43 @@ services:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
retries: 5
start_period: 30s
networks:
- internalnet
- nextinternalnet
volumes:
- C:/Users/promact/postgresdatabase:/var/lib/postgresql/data
- $HOME/postgresdatabase:/var/lib/postgresql/data

nextjsapp:
nextapp:
build:
context: ./
dockerfile: Dockerfile
image: nextjsapp:1.0
image: jainilp12/nextapp:2.0
expose:
- ${SERVER_PORT}
ports:
- 3000:${SERVER_PORT}
- 80:${SERVER_PORT}
command: >
sh -c "npx prisma db push
npm run dev"
sh -c "
npm run start"

environment:
DATABASE_URL: ${REMOTE_DATABASE_URL}
AUTH0_SECRET: ${AUTH0_SECRET}
AUTH0_BASE_URL: ${AUTH0_BASE_URL}
AUTH0_ISSUER_BASE_URL: ${AUTH0_ISSUER_BASE_URL}
AUTH0_CLIENT_ID: ${AUTH0_CLIENT_ID}
AUTH0_CLIENT_SECRET: ${AUTH0_CLIENT_SECRET}

depends_on:
- postgresdb
postgresdb:
condition: service_healthy
networks:
- internalnet
- nextinternalnet

networks:
internalnet:
driver: bridge
nextinternalnet:
driver: bridge