diff --git a/Dockerfile b/Dockerfile index dbdd8b6c..f9628e45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,14 @@ FROM node:20-alpine +RUN apk add --no-cache openssl + RUN npm install -g pnpm WORKDIR /app COPY package.json pnpm-lock.yaml ./ -RUN pnpm install --frozen-lockfile +RUN pnpm install COPY prisma ./prisma/ diff --git a/docker-compose.yml b/docker-compose.yml index 617976c3..04b89e9a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,10 +12,51 @@ services: - PORT=8020 networks: - caddy + - tags labels: caddy_0: tags.b1.buape.com caddy_0.reverse_proxy: "{{upstreams 8020}}" + db: + image: postgres:17 + restart: always + shm_size: 256mb + environment: + POSTGRES_PASSWORD: ${DB_PASS} + POSTGRES_DB: ${DB_NAME} + POSTGRES_USER: ${DB_USER} + volumes: + - "tags-db:/var/lib/postgresql/data" + networks: + - tags + ports: + - "41006:5432" + command: ["postgres", "-c", "log_statement=ddl", "-c", "log_destination=stderr"] + + postgres-backup: + image: itbm/postgres-backup-s3 + networks: + - tags + depends_on: + - db + environment: + - S3_ACCESS_KEY_ID=${S3_KEY} + - S3_SECRET_ACCESS_KEY=${S3_PASS} + - S3_BUCKET=${S3_BUCKET} + - S3_PREFIX=tags + - S3_ENDPOINT=${S3_ENDPOINT} + - S3_REGION=${S3_REGION} + - POSTGRES_DATABASE=${DB_NAME} + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASS} + - POSTGRES_HOST=db + - SCHEDULE=@hourly + +volumes: + tags-db: + networks: caddy: external: true + tags: + external: true