This repository was archived by the owner on Aug 29, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcompose.yaml
More file actions
64 lines (63 loc) · 3.79 KB
/
Copy pathcompose.yaml
File metadata and controls
64 lines (63 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 本番用。イメージは GitHub Actions(.github/workflows/docker-publish.yml)が
# main への push でビルドし GHCR へ公開する。本番ではビルドせず pull するだけ:
#
# docker compose pull && docker compose up -d
#
# TLS 終端と外部公開はこの手前のリバースプロキシの責務 (仕様書 §3, §6.3)。
# ローカルでイメージをビルドして動かしたいときは compose.build.yaml を使う。
services:
# 本体を起動する前に data/ の所有者を実行ユーザーに合わせる。
# bind マウント先がホストに無いと Docker が root 所有で作ってしまい、非 root の
# 本体が書けずに落ちる(「セッションの保存先ディレクトリを作成できません」)。
# バックアップから別の所有者で復元したときも、ここで揃うので手作業が要らない。
# 本体と同じイメージを使うので pull は増えず、chown だけして即終了する。
cctasks-init:
image: ${CCTASKS_IMAGE:-ghcr.io/rtcode337/cc-tasks:latest}
container_name: cc-tasks-init
user: root
volumes:
- ./data:/data
entrypoint: ["sh", "-c", "chown -R ${CCTASKS_UID:-10001}:${CCTASKS_GID:-10001} /data"]
restart: "no"
cctasks:
depends_on:
cctasks-init:
condition: service_completed_successfully
# 障害時は :latest ではなく :sha-xxxxxxx を指定すれば任意の時点に戻せる。
# CCTASKS_IMAGE で上書き可(既定は GHCR の latest)。
image: ${CCTASKS_IMAGE:-ghcr.io/rtcode337/cc-tasks:latest}
container_name: cc-tasks
restart: unless-stopped
ports:
# プロキシからのみ届けばよいのでループバックに閉じる
- "127.0.0.1:7000:7000"
environment:
GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:?GOOGLE_CLIENT_ID を .env に設定してください}
GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET:?GOOGLE_CLIENT_SECRET を .env に設定してください}
ALLOWED_EMAIL: ${ALLOWED_EMAIL:?ログインを許可するメールアドレスを .env に設定してください}
# 任意。サーバーの OAuth は未設定でもリクエスト(X-Forwarded-Proto/Host)から
# リダイレクトを自動導出する。プロキシがそれらを送らない/固定したい場合のみ設定。
PUBLIC_BASE_URL: ${PUBLIC_BASE_URL:-}
# PUBLIC_BASE_URL を使わず Host/X-Forwarded-Host から導出させる場合に必須。
# ここに載せたホストでしか redirect_uri を組み立てない(ヘッダは詐称できるため)
ALLOWED_REDIRECT_HOSTS: ${ALLOWED_REDIRECT_HOSTS:-}
DB_PATH: /data/cctasks.db
# 表示・ログのタイムゾーン。既定は日本時間、必要なら .env の TZ で変えられる
TZ: ${TZ:-Asia/Tokyo}
volumes:
# リポジトリ直下の data/ に置く。名前付きボリュームだと実体が
# /var/lib/docker/volumes/ 配下に隠れ、「リポジトリのフォルダごとコピー」で
# 移行・バックアップしたときに黙って取り残される。
# 所有者は cctasks-init が起動前に揃える
- ./data:/data
# data/ に書かれるファイルをホストのユーザー所有にする。イメージ内の app は
# uid 100 で、ホスト側の所有者と合わないと bind マウントに書けない。
# 実行ユーザー。既定は 10001 = ホストに実在しない番号(抜け出されても
# ホストのユーザーのファイルに届かない)。data/ をホストから直接編集したい
# ときだけ .env の CCTASKS_UID/GID に `id -u`/`id -g` を入れる
user: "${CCTASKS_UID:-10001}:${CCTASKS_GID:-10001}"
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"