Repository navigation
Expand file tree
/
Copy pathcompose.yaml
More file actions
149 lines (145 loc) · 7.87 KB
/
Copy pathcompose.yaml
File metadata and controls
149 lines (145 loc) · 7.87 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
networks:
backend:
driver: bridge
volumes:
sql1data:
driver: local
services:
identityprovider:
image: ${DOCKER_REGISTRY-}identityprovider
build:
context: .
dockerfile: IdentityProvider/Dockerfile
target: final-with-https
args:
- GITHUB_USERNAME=${GITHUB_USERNAME}
- GITHUB_TOKEN=${GITHUB_TOKEN}
# db は healthcheck を持つので、SQL Server が接続を受け付けるまで待ってから起動する。
# 短縮形(service_started 相当)だと RUN_MIGRATIONS_ON_STARTUP の MigrateAsync が
# 起動直後の db に pre-login handshake で弾かれ、Development の fail-fast でコンテナごと
# 消えて caddy の名前解決まで巻き込む(EcAuth#536 の CI 事象)。
depends_on:
db:
condition: service_healthy
mailpit:
condition: service_started
environment:
ASPNETCORE_ENVIRONMENT: Development
ASPNETCORE_HTTP_PORTS: "8080"
ASPNETCORE_HTTPS_PORTS: "8081"
ASPNETCORE_Kestrel__Certificates__Default__Password: changeit
ASPNETCORE_Kestrel__Certificates__Default__Path: /https/aspnetapp.pfx
RUN_MIGRATIONS_ON_STARTUP: "true"
ConnectionStrings__EcAuthDbContext: "Server=${DB_HOST};Database=${DB_NAME};User Id=${DB_USER};Password=${DB_PASSWORD};TrustServerCertificate=true;MultipleActiveResultSets=true"
STATE_PASSWORD: ${STATE_PASSWORD:-strong_password_string_of_at_least_32_characters}
GOOGLE_OAUTH2_APP_NAME: ${GOOGLE_OAUTH2_APP_NAME}
GOOGLE_OAUTH2_CLIENT_ID: ${GOOGLE_OAUTH2_CLIENT_ID}
GOOGLE_OAUTH2_CLIENT_SECRET: ${GOOGLE_OAUTH2_CLIENT_SECRET}
GOOGLE_OAUTH2_DISCOVERY_URL: ${GOOGLE_OAUTH2_DISCOVERY_URL}
AMAZON_OAUTH2_APP_NAME: ${AMAZON_OAUTH2_APP_NAME}
AMAZON_OAUTH2_CLIENT_ID: ${AMAZON_OAUTH2_CLIENT_ID}
AMAZON_OAUTH2_CLIENT_SECRET: ${AMAZON_OAUTH2_CLIENT_SECRET}
AMAZON_OAUTH2_AUTHORIZATION_ENDPOINT: ${AMAZON_OAUTH2_AUTHORIZATION_ENDPOINT}
AMAZON_OAUTH2_TOKEN_ENDPOINT: ${AMAZON_OAUTH2_TOKEN_ENDPOINT}
AMAZON_OAUTH2_USERINFO_ENDPOINT: ${AMAZON_OAUTH2_USERINFO_ENDPOINT}
FEDERATE_OAUTH2_APP_NAME: ${FEDERATE_OAUTH2_APP_NAME}
FEDERATE_OAUTH2_CLIENT_ID: ${FEDERATE_OAUTH2_CLIENT_ID}
FEDERATE_OAUTH2_CLIENT_SECRET: ${FEDERATE_OAUTH2_CLIENT_SECRET}
FEDERATE_OAUTH2_AUTHORIZATION_ENDPOINT: ${FEDERATE_OAUTH2_AUTHORIZATION_ENDPOINT}
FEDERATE_OAUTH2_TOKEN_ENDPOINT: ${FEDERATE_OAUTH2_TOKEN_ENDPOINT}
FEDERATE_OAUTH2_USERINFO_ENDPOINT: ${FEDERATE_OAUTH2_USERINFO_ENDPOINT}
DEFAULT_ORGANIZATION_CODE: ${DEFAULT_ORGANIZATION_CODE}
DEFAULT_ORGANIZATION_NAME: ${DEFAULT_ORGANIZATION_NAME}
DEFAULT_ORGANIZATION_TENANT_NAME: ${DEFAULT_ORGANIZATION_TENANT_NAME}
DEFAULT_ORGANIZATION_REDIRECT_URI: ${DEFAULT_ORGANIZATION_REDIRECT_URI}
DEFAULT_CLIENT_ID: ${DEFAULT_CLIENT_ID}
DEFAULT_CLIENT_SECRET: ${DEFAULT_CLIENT_SECRET}
DEFAULT_APP_NAME: ${DEFAULT_APP_NAME}
# B2Bパスキーテスト用
DEV_B2B_USER_SUBJECT: ${DEV_B2B_USER_SUBJECT}
DEV_B2B_USER_EXTERNAL_ID: ${DEV_B2B_USER_EXTERNAL_ID}
DEV_B2B_REDIRECT_URI: ${DEV_B2B_REDIRECT_URI}
DEV_B2B_ALLOWED_RP_IDS: ${DEV_B2B_ALLOWED_RP_IDS}
# E2Eテスト用の環境変数
E2E_AUTHORIZATION_ENDPOINT: ${E2E_AUTHORIZATION_ENDPOINT}
E2E_TOKEN_ENDPOINT: ${E2E_TOKEN_ENDPOINT}
E2E_USERINFO_ENDPOINT: ${E2E_USERINFO_ENDPOINT}
E2E_REDIRECT_URI: ${E2E_REDIRECT_URI}
# Account 申込フロー(Phase D-1)/ マジックリンク(Phase D-2)用。
# AccountsOrganizationSeeder が accounts / stg-accounts Org と管理コンソール Client を
# 投入するために ACCOUNTS_* / STG_ACCOUNTS_* を container に渡す。
ACCOUNTS_CLIENT_ID: ${ACCOUNTS_CLIENT_ID}
# public client(PKCE)フラグ。マイページは ec-auth.io から PKCE でトークン交換するため
# true。Seeder が client_secret 無しの client を投入し、/v1/token が PKCE を必須にする。
ACCOUNTS_CLIENT_PUBLIC: ${ACCOUNTS_CLIENT_PUBLIC}
ACCOUNTS_CLIENT_SECRET: ${ACCOUNTS_CLIENT_SECRET}
ACCOUNTS_ALLOWED_RP_IDS: ${ACCOUNTS_ALLOWED_RP_IDS}
ACCOUNTS_REDIRECT_URI: ${ACCOUNTS_REDIRECT_URI}
STG_ACCOUNTS_CLIENT_ID: ${STG_ACCOUNTS_CLIENT_ID}
STG_ACCOUNTS_CLIENT_PUBLIC: ${STG_ACCOUNTS_CLIENT_PUBLIC}
STG_ACCOUNTS_CLIENT_SECRET: ${STG_ACCOUNTS_CLIENT_SECRET}
STG_ACCOUNTS_ALLOWED_RP_IDS: ${STG_ACCOUNTS_ALLOWED_RP_IDS}
STG_ACCOUNTS_REDIRECT_URI: ${STG_ACCOUNTS_REDIRECT_URI}
# フロント(ecauth-website / ec-auth.io)の配信元。PasskeyPageController が
# パスキー登録・認証後のマイページ遷移先に使う。既定は本番 URL。
# website 結合 E2E ではフロントの実配信元(例 https://ec-auth.io:1313)に差し替える。
Frontend__BaseUrl: ${Frontend__BaseUrl:-https://ec-auth.io}
# 申込 / マジックリンク / Account / token API の CORS 許可オリジン。
# WithOrigins は scheme+host+port の完全一致で比較するため、ポート付きでフロントを
# 配信する結合 E2E ではそのポートまで含めて指定する必要がある(未設定なら
# Program.cs のフォールバック https://ec-auth.io / https://www.ec-auth.io が使われる)。
Signup__AllowedOrigins__0: ${Signup__AllowedOrigins__0:-}
# 確認 URL / マジックリンク URL の基底(テナント別・リクエスト処理時に必須参照)。
Signup__ConfirmBaseUrl__accounts: ${Signup__ConfirmBaseUrl__accounts:-https://localhost:8081}
Signup__ConfirmBaseUrl__stg_accounts: ${Signup__ConfirmBaseUrl__stg_accounts:-https://localhost:8081}
MagicLink__BaseUrl__accounts: ${MagicLink__BaseUrl__accounts:-https://localhost:8081}
MagicLink__BaseUrl__stg_accounts: ${MagicLink__BaseUrl__stg_accounts:-https://localhost:8081}
# 課金(EcAuthDocs#119)。ローカル / CI E2E は Stripe に接続しない Fake provider で課金 API を有効にする
# (Production では Fake は起動時に拒否される)。戻り先はテナント別・https 必須で、ローカルは IdP 自身。
Billing__Enabled: ${Billing__Enabled:-true}
Billing__Provider: ${Billing__Provider:-Fake}
Billing__ReturnBaseUrl__accounts: ${Billing__ReturnBaseUrl__accounts:-https://localhost:8081}
Billing__ReturnBaseUrl__stg_accounts: ${Billing__ReturnBaseUrl__stg_accounts:-https://localhost:8081}
# メール送信プロバイダ。ローカル / CI E2E は mailpit(SMTP)に送信して実メール経路を検証する。
Email__Provider: ${Email__Provider:-Smtp}
Smtp__Host: ${Smtp__Host:-mailpit}
Smtp__Port: ${Smtp__Port:-1025}
ports:
- "8080:8080"
- "8081:8081"
volumes:
- ${HOME}/.microsoft/usersecrets:/home/app/.microsoft/usersecrets:ro
networks:
- backend
# メールテスト用の SMTP サーバー(受信専用)。SMTP 1025 で受信し、Web UI / REST API を 8025 で提供。
# E2E テストは REST API(http://localhost:8025/api/v1/messages)で確認・マジックリンクのトークンを取得する。
mailpit:
image: axllent/mailpit:latest
environment:
MP_SMTP_AUTH_ACCEPT_ANY: "1"
MP_SMTP_AUTH_ALLOW_INSECURE: "1"
ports:
- "1025:1025"
- "8025:8025"
networks:
- backend
restart: unless-stopped
db:
image: mcr.microsoft.com/mssql/server:2022-latest
environment:
ACCEPT_EULA: "Y"
MSSQL_SA_PASSWORD: ${DB_PASSWORD}
volumes:
- sql1data:/var/opt/mssql
- ./docker/db/backup:/var/opt/mssql/backup
ports:
- 1433:1433
networks:
- backend
restart: always
healthcheck:
test: ["CMD-SHELL", "/opt/mssql-tools18/bin/sqlcmd -S localhost -U ${DB_USER} -P '${DB_PASSWORD}' -C -Q 'SELECT 1' || exit 1"]
interval: 10s
retries: 10
start_period: 10s
timeout: 3s