fix Deployment
This commit is contained in:
12
Dockerfile
12
Dockerfile
@@ -1,11 +1,15 @@
|
|||||||
# 第一阶段:构建阶段
|
# 第一阶段:构建阶段
|
||||||
FROM golang:1.23.4-alpine AS builder
|
FROM golang:1.23.4-alpine AS builder
|
||||||
|
|
||||||
|
# 设置Go代理和Alpine镜像源
|
||||||
|
ENV GOPROXY https://goproxy.cn,direct
|
||||||
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||||
|
|
||||||
# 设置工作目录
|
# 设置工作目录
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# 安装必要的包
|
# 安装必要的包
|
||||||
RUN apk add --no-cache git ca-certificates tzdata
|
RUN apk add --no-cache git tzdata
|
||||||
|
|
||||||
# 复制模块文件
|
# 复制模块文件
|
||||||
COPY go.mod go.sum ./
|
COPY go.mod go.sum ./
|
||||||
@@ -30,9 +34,11 @@ RUN BUILD_TIME=${BUILD_TIME:-$(date -u +"%Y-%m-%dT%H:%M:%SZ")} && \
|
|||||||
# 第二阶段:运行阶段
|
# 第二阶段:运行阶段
|
||||||
FROM alpine:3.19
|
FROM alpine:3.19
|
||||||
|
|
||||||
|
# 设置Alpine镜像源
|
||||||
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
||||||
|
|
||||||
# 安装必要的包
|
# 安装必要的包
|
||||||
RUN apk --no-cache add ca-certificates tzdata curl && \
|
RUN apk --no-cache add tzdata curl
|
||||||
update-ca-certificates
|
|
||||||
|
|
||||||
# 设置时区
|
# 设置时区
|
||||||
ENV TZ=Asia/Shanghai
|
ENV TZ=Asia/Shanghai
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
TZ: Asia/Shanghai
|
TZ: Asia/Shanghai
|
||||||
PGTZ: Asia/Shanghai
|
PGTZ: Asia/Shanghai
|
||||||
POSTGRES_DB: ${DB_NAME:-tyapi_prod}
|
POSTGRES_DB: tyapi
|
||||||
POSTGRES_USER: ${DB_USER:-tyapi_user}
|
POSTGRES_USER: tyapi_user
|
||||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
POSTGRES_PASSWORD: Pg9mX4kL8nW2rT5y
|
||||||
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
|
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
|
||||||
# 性能优化配置
|
# 性能优化配置
|
||||||
POSTGRES_SHARED_PRELOAD_LIBRARIES: pg_stat_statements
|
POSTGRES_SHARED_PRELOAD_LIBRARIES: pg_stat_statements
|
||||||
@@ -20,7 +20,7 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- tyapi-network
|
- tyapi-network
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-tyapi_user}"]
|
test: ["CMD-SHELL", "pg_isready -U tyapi_user"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 5
|
retries: 5
|
||||||
@@ -36,7 +36,7 @@ services:
|
|||||||
cpus: "0.5"
|
cpus: "0.5"
|
||||||
# 生产环境暴露数据库端口到主机
|
# 生产环境暴露数据库端口到主机
|
||||||
ports:
|
ports:
|
||||||
- "${DB_PORT:-25010}:5432"
|
- "25010:5432"
|
||||||
|
|
||||||
# Redis 缓存 (生产环境)
|
# Redis 缓存 (生产环境)
|
||||||
redis:
|
redis:
|
||||||
@@ -44,29 +44,15 @@ services:
|
|||||||
container_name: tyapi-redis-prod
|
container_name: tyapi-redis-prod
|
||||||
environment:
|
environment:
|
||||||
TZ: Asia/Shanghai
|
TZ: Asia/Shanghai
|
||||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
REDIS_PASSWORD: ""
|
||||||
volumes:
|
volumes:
|
||||||
- redis_data:/data
|
- redis_data:/data
|
||||||
- ./deployments/docker/redis.conf:/usr/local/etc/redis/redis.conf
|
- ./deployments/docker/redis.conf:/usr/local/etc/redis/redis.conf
|
||||||
command: >
|
command: redis-server /usr/local/etc/redis/redis.conf
|
||||||
sh -c "
|
|
||||||
if [ ! -z '${REDIS_PASSWORD}' ]; then
|
|
||||||
redis-server /usr/local/etc/redis/redis.conf --requirepass ${REDIS_PASSWORD}
|
|
||||||
else
|
|
||||||
redis-server /usr/local/etc/redis/redis.conf
|
|
||||||
fi
|
|
||||||
"
|
|
||||||
networks:
|
networks:
|
||||||
- tyapi-network
|
- tyapi-network
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: >
|
test: redis-cli ping
|
||||||
sh -c "
|
|
||||||
if [ ! -z '${REDIS_PASSWORD}' ]; then
|
|
||||||
redis-cli -a ${REDIS_PASSWORD} ping
|
|
||||||
else
|
|
||||||
redis-cli ping
|
|
||||||
fi
|
|
||||||
"
|
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 5
|
retries: 5
|
||||||
@@ -89,9 +75,9 @@ services:
|
|||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
VERSION: ${APP_VERSION:-1.0.0}
|
VERSION: 1.0.0
|
||||||
COMMIT: ${GIT_COMMIT:-dev}
|
COMMIT: dev
|
||||||
BUILD_TIME: ${BUILD_TIME}
|
BUILD_TIME: ""
|
||||||
container_name: tyapi-app-prod
|
container_name: tyapi-app-prod
|
||||||
environment:
|
environment:
|
||||||
# 时区配置
|
# 时区配置
|
||||||
@@ -101,40 +87,40 @@ services:
|
|||||||
ENV: production
|
ENV: production
|
||||||
|
|
||||||
# 服务器配置
|
# 服务器配置
|
||||||
SERVER_PORT: ${SERVER_PORT:-8080}
|
SERVER_PORT: 8080
|
||||||
SERVER_MODE: release
|
SERVER_MODE: release
|
||||||
|
|
||||||
# 数据库配置
|
# 数据库配置
|
||||||
DB_HOST: postgres
|
DB_HOST: postgres
|
||||||
DB_PORT: 5432
|
DB_PORT: 5432
|
||||||
DB_USER: ${DB_USER:-tyapi_user}
|
DB_USER: tyapi_user
|
||||||
DB_PASSWORD: ${DB_PASSWORD}
|
DB_PASSWORD: Pg9mX4kL8nW2rT5y
|
||||||
DB_NAME: ${DB_NAME:-tyapi_prod}
|
DB_NAME: tyapi
|
||||||
DB_SSLMODE: ${DB_SSLMODE:-require}
|
DB_SSLMODE: require
|
||||||
|
|
||||||
# Redis配置
|
# Redis配置
|
||||||
REDIS_HOST: redis
|
REDIS_HOST: redis
|
||||||
REDIS_PORT: 6379
|
REDIS_PORT: 6379
|
||||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
REDIS_PASSWORD: ""
|
||||||
|
|
||||||
# JWT配置
|
# JWT配置
|
||||||
JWT_SECRET: ${JWT_SECRET}
|
JWT_SECRET: JwT8xR4mN9vP2sL7kH3oB6yC1zA5uF0qE9tW
|
||||||
|
|
||||||
# 监控配置
|
# 监控配置
|
||||||
TRACING_ENABLED: false
|
TRACING_ENABLED: false
|
||||||
METRICS_ENABLED: false
|
METRICS_ENABLED: false
|
||||||
|
|
||||||
# 日志配置
|
# 日志配置
|
||||||
LOG_LEVEL: ${LOG_LEVEL:-info}
|
LOG_LEVEL: warn
|
||||||
LOG_FORMAT: json
|
LOG_FORMAT: json
|
||||||
|
|
||||||
# 短信配置
|
# 短信配置
|
||||||
SMS_ACCESS_KEY_ID: ${SMS_ACCESS_KEY_ID}
|
SMS_ACCESS_KEY_ID: LTAI5tKGB3TVJbMHSoZN3yr9
|
||||||
SMS_ACCESS_KEY_SECRET: ${SMS_ACCESS_KEY_SECRET}
|
SMS_ACCESS_KEY_SECRET: OCQ30GWp4yENMjmfOAaagksE18bp65
|
||||||
SMS_SIGN_NAME: ${SMS_SIGN_NAME}
|
SMS_SIGN_NAME: 天远数据
|
||||||
SMS_TEMPLATE_CODE: ${SMS_TEMPLATE_CODE}
|
SMS_TEMPLATE_CODE: SMS_474525324
|
||||||
ports:
|
ports:
|
||||||
- "${APP_PORT:-25000}:8080"
|
- "25000:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- app_logs:/app/logs
|
- app_logs:/app/logs
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
Reference in New Issue
Block a user