| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #!/bin/sh
- set -eu
- ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
- cd "$ROOT_DIR"
- assert_file() {
- if [ ! -f "$1" ]; then
- echo "缺少文件: $1" >&2
- exit 1
- fi
- }
- assert_contains() {
- file=$1
- expected=$2
- if ! grep -Fq -- "$expected" "$file"; then
- echo "$file 缺少配置: $expected" >&2
- exit 1
- fi
- }
- assert_file Dockerfile
- assert_file compose.yaml
- assert_file docker/entrypoint.sh
- assert_file .dockerignore
- assert_contains Dockerfile "FROM node:20"
- assert_contains Dockerfile "FROM maven:3.9"
- assert_contains Dockerfile "COPY --from=frontend-build /build/frontend/dist"
- assert_contains Dockerfile 'ENTRYPOINT ["/app/entrypoint.sh"]'
- assert_contains compose.yaml "./data:/app/data"
- assert_contains compose.yaml "SPRING_DATASOURCE_URL: jdbc:sqlite:/app/data/okr-performance.db"
- assert_contains compose.yaml "APP_BACKUP_DIR: /app/data/backups"
- assert_contains docker/entrypoint.sh 'mkdir -p "$DATA_DIR" "$BACKUP_DIR"'
- assert_contains docker/entrypoint.sh '数据库目录不可写'
- assert_contains .dockerignore "data/"
- assert_contains .dockerignore "**/target/"
- assert_contains .dockerignore "**/node_modules/"
- echo "Docker 配置契约检查通过"
|