This commit is contained in:
2026-05-20 18:08:37 +07:00
parent dd3fd889a3
commit 290d36e8cb
21 changed files with 1359 additions and 72 deletions

View File

@@ -1,27 +1,25 @@
# Run the prod-built app in a container, pulling env vars from .env.local
# (if present) or from the shell. No build-time secrets — every env value is
# read at container start by Next's standalone server.
# Pulls the published image from Docker Hub — no local build path here.
# Use `./build.sh` to (re)publish the image; this file only consumes it.
#
# Usage:
# docker compose up --build
# APP_PORT=8080 docker compose up (override host port)
# docker compose pull # fetch latest from Hub
# docker compose up -d # start
# APP_PORT=8080 docker compose up -d # override host port
# docker compose down # stop + remove
#
# Compose v2.24+ (required for `env_file: path/required` syntax).
services:
app:
build:
context: .
dockerfile: Dockerfile
image: places:latest
image: renolation/places:latest
container_name: places
restart: unless-stopped
pull_policy: always
ports:
- "${APP_PORT:-3000}:3000"
# Env vars are loaded from .env.local at container start.
# `required: false` lets compose run even if the file is missing — useful
# when vars are injected by an external system (CI, K8s secrets, etc).
# Env vars are loaded from .env.local at container start (if present).
# Useful for ad-hoc overrides; baseline values are in `environment:` below.
env_file:
- path: .env.local
required: false
@@ -37,6 +35,13 @@ services:
PGDATABASE: places_db
PGPORT: "5432"
# Cloudflare R2 — image storage
R2_ENDPOINT: https://a825ab8ed865a9e0bfbf99feca3694e8.r2.cloudflarestorage.com
R2_BUCKET: places
R2_ACCESS_KEY_ID: 456ee3bb8c537fc6441f87e1e62c5631
R2_SECRET_ACCESS_KEY: 7c9081e46301ecd0196cbe24f4fc05c0841d0720d3e33d198b1f8659f87757aa
R2_PUBLIC_URL: https://cdn.renolation.com
healthcheck:
test:
- "CMD"