From 09e7c410a8bb2ff192bff0aca9e659cc637a624e Mon Sep 17 00:00:00 2001 From: Shihaam Abdul Rahman Date: Sat, 11 Jan 2025 01:13:03 +0500 Subject: [PATCH] docker --- .build/dev/node.Dockerfile | 5 +++++ .build/dev/prisma.Dockerfile | 5 +++++ .build/prod/README.md | 12 ++++++++++ .build/prod/bun.Dockerfile | 18 +++++++++++++++ .build/prod/compose.yml | 13 +++++++++++ .build/prod/prisma.Dockerfile | 5 +++++ .gitea/workflows/docker-build.yml | 37 +++++++++++++++++++++++++++++++ 7 files changed, 95 insertions(+) create mode 100644 .build/dev/node.Dockerfile create mode 100644 .build/dev/prisma.Dockerfile create mode 100644 .build/prod/README.md create mode 100644 .build/prod/bun.Dockerfile create mode 100644 .build/prod/compose.yml create mode 100644 .build/prod/prisma.Dockerfile create mode 100644 .gitea/workflows/docker-build.yml diff --git a/.build/dev/node.Dockerfile b/.build/dev/node.Dockerfile new file mode 100644 index 0000000..592e1fb --- /dev/null +++ b/.build/dev/node.Dockerfile @@ -0,0 +1,5 @@ +FROM node:18 + +WORKDIR /var/www/html + +CMD npm run dev diff --git a/.build/dev/prisma.Dockerfile b/.build/dev/prisma.Dockerfile new file mode 100644 index 0000000..eb2d720 --- /dev/null +++ b/.build/dev/prisma.Dockerfile @@ -0,0 +1,5 @@ +FROM node:18 + +WORKDIR /var/www/html + +CMD npx prisma studio diff --git a/.build/prod/README.md b/.build/prod/README.md new file mode 100644 index 0000000..08953ba --- /dev/null +++ b/.build/prod/README.md @@ -0,0 +1,12 @@ +### Docker/Podman compose.yml +```yml +services: + sarlinkportal: + image: git.shihaam.dev/sarlink/sarlink-portal + hostname: sarlink-portal + ports: + - 3000:3000 +# volumes: +# - uploads:/var/www/html/public/uploads + env_file: .env +``` diff --git a/.build/prod/bun.Dockerfile b/.build/prod/bun.Dockerfile new file mode 100644 index 0000000..f9e29d3 --- /dev/null +++ b/.build/prod/bun.Dockerfile @@ -0,0 +1,18 @@ +FROM oven/bun:1.1.42-debian AS builder +WORKDIR /var/www/html +ENV NEXT_TELEMETRY_DISABLED=1 + +COPY . . +RUN bun install --frozen-lockfile +RUN bunx prisma generate +RUN bun run build + +FROM oven/bun:1.1.42-debian +WORKDIR /var/www/html +COPY --from=builder /var/www/html/package.json ./ +COPY --from=builder /var/www/html/node_modules ./node_modules +COPY --from=builder /var/www/html/.next ./.next +COPY --from=builder /var/www/html/public ./public +COPY --from=builder /var/www/html/prisma ./prisma +VOLUME /var/www/html +CMD ["bun", "start"] diff --git a/.build/prod/compose.yml b/.build/prod/compose.yml new file mode 100644 index 0000000..cd07c4d --- /dev/null +++ b/.build/prod/compose.yml @@ -0,0 +1,13 @@ +services: + app: + build: + context: ../../ + dockerfile: .build/prod/bun.Dockerfile + hostname: sarlink-portal + image: git.shihaam.dev/sarlink/sarlink-portal/app + prisma-studio: + build: + context: . + dockerfile: ./prisma.Dockerfile + hostname: sarlink-portal-database-ui + image: git.shihaam.dev/sarlink/sarlink-portal/prisma-studio diff --git a/.build/prod/prisma.Dockerfile b/.build/prod/prisma.Dockerfile new file mode 100644 index 0000000..a01f725 --- /dev/null +++ b/.build/prod/prisma.Dockerfile @@ -0,0 +1,5 @@ +FROM oven/bun:1.1.42-debian + +WORKDIR /var/www/html + +CMD bunx prisma studio diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml new file mode 100644 index 0000000..8cb7224 --- /dev/null +++ b/.gitea/workflows/docker-build.yml @@ -0,0 +1,37 @@ +name: Build and Push Docker Images + +on: + push: + branches: + - main + - master + pull_request: + branches: + - main + - master + +jobs: + docker: + name: Build and Push Docker Images + runs-on: builder + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Build Docker images + working-directory: .build/prod + run: docker compose build + + - name: Login to Docker Registry + if: github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + registry: ${{ vars.DOCKER_REGISTRY_URL }} + username: ${{ vars.DOCKER_REGISTRY_USER }} + password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }} + + - name: Push Docker images + if: github.event_name != 'pull_request' + working-directory: .build/prod + run: docker compose push