build: sjednocení Dockerfile
CI / Generate TypeScript types (push) Successful in 1m8s
CI / Server unit tests (push) Successful in 34s
CI / Build server (push) Successful in 1m39s
CI / Build client (push) Successful in 17m30s
CI / Playwright E2E tests (push) Successful in 15m25s
CI / Build and push Docker image (push) Successful in 12m57s
CI / Notify (push) Successful in 11s
CI / Generate TypeScript types (push) Successful in 1m8s
CI / Server unit tests (push) Successful in 34s
CI / Build server (push) Successful in 1m39s
CI / Build client (push) Successful in 17m30s
CI / Playwright E2E tests (push) Successful in 15m25s
CI / Build and push Docker image (push) Successful in 12m57s
CI / Notify (push) Successful in 11s
This commit is contained in:
@@ -215,7 +215,8 @@ jobs:
|
|||||||
- uses: docker/build-push-action@v5
|
- uses: docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: Dockerfile-Woodpecker
|
file: Dockerfile
|
||||||
|
target: runner-prebuilt
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
push: true
|
push: true
|
||||||
tags: ${{ secrets.REPO_URL }}/${{ secrets.REPO_NAME }}:latest
|
tags: ${{ secrets.REPO_URL }}/${{ secrets.REPO_NAME }}:latest
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ e2e/ → Playwright E2E tests (separate package)
|
|||||||
|
|
||||||
Each of the four directories has its own `package.json`. Package manager: **Yarn Classic**.
|
Each of the four directories has its own `package.json`. Package manager: **Yarn Classic**.
|
||||||
|
|
||||||
Deployment files at repo root: `Dockerfile`, `Dockerfile-Woodpecker`, `compose.yml`, `compose-traefik.yml`.
|
Deployment files at repo root: `Dockerfile` (multi-stage, dva runner targety: výchozí `runner` pro lokální build, `runner-prebuilt` pro CI s předem sestavenými artefakty), `compose.yml`, `compose-traefik.yml`.
|
||||||
|
|
||||||
## Development Commands
|
## Development Commands
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ Gitea Actions — `.gitea/workflows/ci.yaml` (no `.github/` equivalent):
|
|||||||
2. `server-test` — Jest
|
2. `server-test` — Jest
|
||||||
3. `server-build` + `client-build` — parallel tsc/vite builds
|
3. `server-build` + `client-build` — parallel tsc/vite builds
|
||||||
4. `e2e` — Playwright in `mcr.microsoft.com/playwright:v1.59.1-jammy` with a Redis service container; only Firefox installed in CI
|
4. `e2e` — Playwright in `mcr.microsoft.com/playwright:v1.59.1-jammy` with a Redis service container; only Firefox installed in CI
|
||||||
5. `docker-build` — master branch only, uses `Dockerfile-Woodpecker`
|
5. `docker-build` — master branch only, uses `Dockerfile` with `--target runner-prebuilt` (skládá image z artefaktů `server-build` + `client-build`)
|
||||||
6. `notify` — Discord + ntfy webhooks
|
6. `notify` — Discord + ntfy webhooks
|
||||||
|
|
||||||
### Formatting
|
### Formatting
|
||||||
|
|||||||
+33
-8
@@ -1,6 +1,6 @@
|
|||||||
ARG NODE_VERSION="node:22-alpine"
|
ARG NODE_VERSION="node:22-alpine"
|
||||||
|
|
||||||
# Builder
|
# ─── Builder ──────────────────────────────────────────────────────────────────
|
||||||
FROM ${NODE_VERSION} AS builder
|
FROM ${NODE_VERSION} AS builder
|
||||||
|
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
@@ -62,8 +62,9 @@ RUN yarn build
|
|||||||
WORKDIR /build/client
|
WORKDIR /build/client
|
||||||
RUN yarn build
|
RUN yarn build
|
||||||
|
|
||||||
# Runner
|
# ─── Runner base ──────────────────────────────────────────────────────────────
|
||||||
FROM ${NODE_VERSION}
|
# Společný základ pro oba runner targety – nastaví prostředí a metadata běhu.
|
||||||
|
FROM ${NODE_VERSION} AS runner-base
|
||||||
|
|
||||||
RUN apk add --no-cache tzdata
|
RUN apk add --no-cache tzdata
|
||||||
ENV TZ=Europe/Prague \
|
ENV TZ=Europe/Prague \
|
||||||
@@ -72,6 +73,17 @@ ENV TZ=Europe/Prague \
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Export /data/db.json do složky /data
|
||||||
|
VOLUME ["/data"]
|
||||||
|
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
CMD [ "node", "./server/src/index.js" ]
|
||||||
|
|
||||||
|
# ─── Runner (default) ─────────────────────────────────────────────────────────
|
||||||
|
# Použití: docker build . (lokální sestavení – vše se buildí uvnitř image)
|
||||||
|
FROM runner-base AS runner
|
||||||
|
|
||||||
# Vykopírování sestaveného serveru
|
# Vykopírování sestaveného serveru
|
||||||
COPY --from=builder /build/server/node_modules ./server/node_modules
|
COPY --from=builder /build/server/node_modules ./server/node_modules
|
||||||
COPY --from=builder /build/server/dist ./
|
COPY --from=builder /build/server/dist ./
|
||||||
@@ -85,12 +97,25 @@ COPY /server/.env.production ./server
|
|||||||
# Zkopírování changelogů (seznamu novinek)
|
# Zkopírování changelogů (seznamu novinek)
|
||||||
COPY /server/changelogs ./server/changelogs
|
COPY /server/changelogs ./server/changelogs
|
||||||
|
|
||||||
# Zkopírování konfigurace easter eggů a changelogů
|
# Zkopírování konfigurace easter eggů
|
||||||
RUN if [ -f ./server/.easter-eggs.json ]; then cp ./server/.easter-eggs.json ./server/; fi
|
RUN if [ -f ./server/.easter-eggs.json ]; then cp ./server/.easter-eggs.json ./server/; fi
|
||||||
|
|
||||||
# Export /data/db.json do složky /data
|
# ─── Runner (prebuilt) ────────────────────────────────────────────────────────
|
||||||
VOLUME ["/data"]
|
# Použití: docker build --target runner-prebuilt .
|
||||||
|
# Očekává předem sestavené artefakty v build kontextu (server/dist,
|
||||||
|
# client/dist, server/node_modules) – využívá Gitea Actions, kde se
|
||||||
|
# server i klient buildí v separátních jobech a sem se jen kopírují.
|
||||||
|
FROM runner-base AS runner-prebuilt
|
||||||
|
|
||||||
EXPOSE 3000
|
# Vykopírování sestaveného serveru
|
||||||
|
COPY ./server/node_modules ./server/node_modules
|
||||||
|
COPY ./server/dist ./
|
||||||
|
|
||||||
CMD [ "node", "./server/src/index.js" ]
|
# Vykopírování sestaveného klienta
|
||||||
|
COPY ./client/dist ./public
|
||||||
|
|
||||||
|
# Zkopírování changelogů (seznamu novinek)
|
||||||
|
COPY ./server/changelogs ./server/changelogs
|
||||||
|
|
||||||
|
# Zkopírování konfigurace easter eggů
|
||||||
|
RUN if [ -f ./server/.easter-eggs.json ]; then cp ./server/.easter-eggs.json ./server/; fi
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
ARG NODE_VERSION="node:22-alpine"
|
|
||||||
|
|
||||||
FROM ${NODE_VERSION}
|
|
||||||
|
|
||||||
RUN apk add --no-cache tzdata
|
|
||||||
ENV TZ=Europe/Prague \
|
|
||||||
LC_ALL=cs_CZ.UTF-8 \
|
|
||||||
NODE_ENV=production
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
# Vykopírování sestaveného serveru
|
|
||||||
COPY ./server/node_modules ./server/node_modules
|
|
||||||
COPY ./server/dist ./
|
|
||||||
# TODO tohle není dobře, má to být součástí serveru
|
|
||||||
# COPY ./server/resources ./resources
|
|
||||||
|
|
||||||
# Vykopírování sestaveného klienta
|
|
||||||
COPY ./client/dist ./public
|
|
||||||
|
|
||||||
# Zkopírování changelogů (seznamu novinek)
|
|
||||||
COPY ./server/changelogs ./server/changelogs
|
|
||||||
|
|
||||||
# Zkopírování konfigurace easter eggů
|
|
||||||
RUN if [ -f ./server/.easter-eggs.json ]; then cp ./server/.easter-eggs.json ./server/; fi
|
|
||||||
|
|
||||||
EXPOSE 3000
|
|
||||||
|
|
||||||
CMD [ "node", "./server/src/index.js" ]
|
|
||||||
Reference in New Issue
Block a user