diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..81e9189 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +# 构建阶段 +FROM golang:1.23-alpine AS builder +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +COPY . . +RUN CGO_ENABLED=0 GOOS=linux go build -o main . + +# 运行阶段 +FROM alpine:latest +WORKDIR /app +COPY --from=builder /app/main . +COPY config.yaml ./ +EXPOSE 8080 +CMD ["./main"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b25b4a1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,33 @@ +version: '3.8' + +services: + app: + build: . + ports: + - "8080:8080" + depends_on: + db: + condition: service_healthy + environment: + - TZ=Asia/Shanghai + volumes: + - ./config.yaml:/app/config.yaml + + db: + image: postgres:16-alpine + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: root + POSTGRES_DB: training_db + volumes: + - pgdata:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 5 + ports: + - "5432:5432" + +volumes: + pgdata: