Skip to content

Commit 8f15b31

Browse files
committed
add web dockerfile
1 parent dbc9d82 commit 8f15b31

File tree

3 files changed

+93
-3
lines changed

3 files changed

+93
-3
lines changed

.github/workflows/docker-publish.yaml

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@ on:
1010

1111
env:
1212
REGISTRY: ghcr.io
13-
IMAGE_NAME: ${{ github.repository }}/uno
1413

1514
jobs:
16-
build-and-push:
15+
build-and-push-uno:
1716
runs-on: ubuntu-latest
1817
permissions:
1918
contents: read
2019
packages: write
20+
env:
21+
IMAGE_NAME: uno
2122

2223
steps:
2324
- name: 🔍 Checkout repository
@@ -42,7 +43,7 @@ jobs:
4243
- name: 🏗️ Set up Docker Buildx
4344
uses: docker/setup-buildx-action@v3
4445

45-
- name: 🐳 Build and push Docker image
46+
- name: 🐳 Build and push uno
4647
uses: docker/build-push-action@v6
4748
with:
4849
context: .
@@ -53,3 +54,46 @@ jobs:
5354
cache-from: type=gha
5455
cache-to: type=gha,mode=max
5556
platforms: linux/amd64
57+
58+
build-and-push-web:
59+
runs-on: ubuntu-latest
60+
permissions:
61+
contents: read
62+
packages: write
63+
env:
64+
IMAGE_NAME: web
65+
66+
steps:
67+
- name: 🔍 Checkout repository
68+
uses: actions/checkout@v5
69+
70+
- name: 🔐 Log in to GitHub Container Registry
71+
uses: docker/login-action@v3
72+
with:
73+
registry: ${{ env.REGISTRY }}
74+
username: ${{ github.actor }}
75+
password: ${{ secrets.GITHUB_TOKEN }}
76+
77+
- name: 🏷️ Extract metadata for Docker
78+
id: meta
79+
uses: docker/metadata-action@v5
80+
with:
81+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
82+
tags: |
83+
type=raw,value=latest,enable={{is_default_branch}}
84+
type=ref,event=pr,prefix=pr-
85+
86+
- name: 🏗️ Set up Docker Buildx
87+
uses: docker/setup-buildx-action@v3
88+
89+
- name: 🐳 Build and push web
90+
uses: docker/build-push-action@v6
91+
with:
92+
context: .
93+
file: ./apps/web/Dockerfile
94+
push: true
95+
tags: ${{ steps.meta.outputs.tags }}
96+
labels: ${{ steps.meta.outputs.labels }}
97+
cache-from: type=gha
98+
cache-to: type=gha,mode=max
99+
platforms: linux/amd64

apps/web/Dockerfile

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
FROM node:22.21.1-alpine AS base
2+
3+
RUN npm install -g turbo@2.5.8
4+
RUN npm install -g pnpm@10.20.0
5+
6+
FROM base AS builder
7+
8+
RUN apk update
9+
RUN apk add --no-cache libc6-compat
10+
11+
WORKDIR /app
12+
COPY . .
13+
RUN turbo prune @echo-webkom/web --docker
14+
15+
FROM base AS installer
16+
RUN apk update
17+
RUN apk add --no-cache libc6-compat
18+
WORKDIR /app
19+
20+
COPY --from=builder /app/out/json/ .
21+
RUN pnpm install
22+
23+
COPY --from=builder /app/out/full/ .
24+
25+
ENV NEXT_OUTPUT=standalone
26+
RUN pnpm turbo build --filter=@echo-webkom/web...
27+
28+
FROM base AS runner
29+
WORKDIR /app
30+
31+
RUN addgroup --system --gid 1001 nodejs
32+
RUN adduser --system --uid 1001 nextjs
33+
USER nextjs
34+
35+
COPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/standalone ./
36+
COPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static
37+
COPY --from=installer --chown=nextjs:nodejs /app/apps/web/public ./apps/web/public
38+
39+
CMD node apps/web/server.js

apps/web/next.config.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
import type { NextConfig } from "next";
22

3+
let NEXT_OUTPUT = process.env.NEXT_OUTPUT as "export" | "standalone" | undefined;
4+
5+
if (NEXT_OUTPUT && !["export", "standalone"]?.includes(NEXT_OUTPUT)) {
6+
NEXT_OUTPUT = undefined;
7+
}
8+
39
const config = {
410
reactCompiler: true,
11+
output: NEXT_OUTPUT,
512

613
transpilePackages: [
714
"@echo-webkom/db",

0 commit comments

Comments
 (0)