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
33 changes: 33 additions & 0 deletions web/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# syntax=docker/dockerfile:1


# docker build -f web/Dockerfile -t cobalt-web .

FROM node:20-alpine AS builder

WORKDIR /repo

RUN npm install -g pnpm

# Copy monorepo into container
COPY . .

# Install all deps for monorepo
RUN pnpm install --frozen-lockfile

WORKDIR /repo/web
RUN pnpm --filter ./web run build


FROM nginx:alpine

WORKDIR /usr/share/nginx/html
COPY --from=builder /repo/web/build .

COPY web/docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh

EXPOSE 80

ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]
12 changes: 12 additions & 0 deletions web/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/sh
set -e

# Replace config placeholders with runtime values
if [ -f "/usr/share/nginx/html/runtime-config.js" ]; then
envsubst '${WEB_HOST} ${WEB_PLAUSIBLE_HOST} ${WEB_DEFAULT_API}' \
< /usr/share/nginx/html/runtime-config.js \
> /usr/share/nginx/html/runtime-config.tmp.js && \
mv /usr/share/nginx/html/runtime-config.tmp.js /usr/share/nginx/html/runtime-config.js
fi

exec "$@"
4 changes: 4 additions & 0 deletions web/pnpm-workspace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
packages:
- "api"
- "web"
- "packages/*"
5 changes: 5 additions & 0 deletions web/static/runtime-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
window.COBALT_CONFIG = {
WEB_HOST: "${WEB_HOST}",
WEB_PLAUSIBLE_HOST: "${WEB_PLAUSIBLE_HOST}",
WEB_DEFAULT_API: "${WEB_DEFAULT_API}"
};