46 lines
1.9 KiB
Gherkin
46 lines
1.9 KiB
Gherkin
Feature: Docker deployment
|
|
RenewCMS can run in a container built from the repository. The container
|
|
reuses the existing configuration contract in cmd/server/main.go
|
|
(requiredEnvVars, envDefaults); no new variables are introduced.
|
|
|
|
Background:
|
|
Given the image is built with the default build, without the nofrontend tag
|
|
And the container runs the binary directly as PID 1 under a non-root user
|
|
And the environment sets DB_FILE and UPLOAD_DIR to paths on a named volume
|
|
And the required variables PUBLIC_URL, JWT_SECRET, SMTP_LOGIN, SMTP_SENDER, SMTP_PASSWORD, SMTP_HOST and SMTP_PORT come from an env file at runtime
|
|
|
|
Scenario: Healthy start
|
|
When the container starts with every required variable set
|
|
Then it logs "RenewCMS <version> (production) listening on :8080"
|
|
And GET /healthz on the published port returns 200 with the body "ok"
|
|
|
|
Scenario: Frontend and API are both served
|
|
When the container is running
|
|
Then GET / returns 200 with the SPA index.html
|
|
And GET /v1/auth/registration returns 200 with a JSON body
|
|
|
|
Scenario Outline: A missing required variable stops the container
|
|
When the container starts without <variable>
|
|
Then the process exits with a non-zero status
|
|
And the log contains "Environment variable <variable> is not set"
|
|
|
|
Examples:
|
|
| variable |
|
|
| PUBLIC_URL |
|
|
| JWT_SECRET |
|
|
| SMTP_LOGIN |
|
|
| SMTP_SENDER |
|
|
| SMTP_PASSWORD |
|
|
| SMTP_HOST |
|
|
| SMTP_PORT |
|
|
|
|
Scenario: Data survives container recreation
|
|
Given an account was registered while the container was running
|
|
When the container is removed and recreated on the same named volume
|
|
Then the same account can log in
|
|
|
|
Scenario: Graceful shutdown on SIGTERM
|
|
When the container receives SIGTERM
|
|
Then the log contains "shutting down..."
|
|
And the container exits with status 0 within 10 seconds
|