feat(server): packaging Docker Compose et push Gitea Registry (ticket #52)
Ajoute le Dockerfile multi-stage (build dart:stable, runtime debian:bookworm-slim avec ca-certificates, exécutable AOT compilé), le docker-compose.yaml (API + Postgres avec healthcheck et depends_on: service_healthy), .env.example, .dockerignore et les scripts scripts/docker-entrypoint.sh (migration au démarrage) et scripts/push-gitea-image.sh (aucun identifiant en dur, mot de passe via --password-stdin). dart analyze clean, dart test 24/24 vert, `docker compose config` valide (syntaxe, interpolation de variables, healthcheck). Dockerfile et scripts relus manuellement et jugés corrects ; pas de docker build/compose up réel faute d'accès au daemon Docker dans ce sandbox. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -2,4 +2,7 @@
|
||||
|
||||
Operational scripts for the server package.
|
||||
|
||||
Docker image publishing is planned for ticket #52.
|
||||
- `docker-entrypoint.sh`: container entrypoint; applies migrations when
|
||||
`MIGRATE_ON_STARTUP=true`, then executes the server command.
|
||||
- `push-gitea-image.sh`: builds and pushes the Docker image to a Gitea
|
||||
Container Registry using environment variables only.
|
||||
|
||||
8
server/scripts/docker-entrypoint.sh
Executable file
8
server/scripts/docker-entrypoint.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env sh
|
||||
set -eu
|
||||
|
||||
if [ "${MIGRATE_ON_STARTUP:-true}" = "true" ]; then
|
||||
/app/bin/migrate
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
29
server/scripts/push-gitea-image.sh
Executable file
29
server/scripts/push-gitea-image.sh
Executable file
@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
require_env() {
|
||||
local name="$1"
|
||||
if [[ -z "${!name:-}" ]]; then
|
||||
echo "Missing required environment variable: ${name}" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
require_env GITEA_REGISTRY
|
||||
require_env GITEA_OWNER
|
||||
require_env GITEA_IMAGE_NAME
|
||||
require_env GITEA_USERNAME
|
||||
require_env GITEA_TOKEN
|
||||
|
||||
GITEA_IMAGE_TAG="${GITEA_IMAGE_TAG:-latest}"
|
||||
IMAGE_REF="${GITEA_REGISTRY}/${GITEA_OWNER}/${GITEA_IMAGE_NAME}:${GITEA_IMAGE_TAG}"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
SERVER_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
|
||||
docker build -t "${IMAGE_REF}" "${SERVER_DIR}"
|
||||
printf '%s' "${GITEA_TOKEN}" | docker login "${GITEA_REGISTRY}" \
|
||||
--username "${GITEA_USERNAME}" \
|
||||
--password-stdin
|
||||
docker push "${IMAGE_REF}"
|
||||
|
||||
echo "Pushed ${IMAGE_REF}"
|
||||
Reference in New Issue
Block a user