mmap-tile/Dockerfile
tsuki ceaa43f87d
Some checks are pending
Docker Build and Push / build (push) Waiting to run
update remap
2025-08-01 15:25:11 +08:00

60 lines
1.3 KiB
Docker

# 使用官方Rust镜像作为构建阶段
FROM rust:1.75-slim as builder
# 设置工作目录
WORKDIR /usr/src/app
# 复制Cargo.toml和Cargo.lock文件
COPY Cargo.toml Cargo.lock ./
# 创建一个虚拟的main.rs来缓存依赖
RUN mkdir src && echo "fn main() {}" > src/main.rs
# 构建依赖(这会缓存依赖层)
RUN cargo build --release
# 删除虚拟的main.rs
RUN rm src/main.rs
# 复制源代码
COPY src ./src
# 重新构建应用程序(现在会使用缓存的依赖)
RUN cargo build --release
# 运行时阶段
FROM debian:bookworm-slim
# 安装运行时依赖
RUN apt-get update && apt-get install -y \
ca-certificates \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
# 创建非root用户
RUN groupadd -r appuser && useradd -r -g appuser appuser
# 设置工作目录
WORKDIR /app
# 从构建阶段复制二进制文件
COPY --from=builder /usr/src/app/target/release/mapp-tile /app/mapp-tile
# 复制配置文件(如果有的话)
COPY .env* ./
# 更改文件所有权
RUN chown -R appuser:appuser /app
# 切换到非root用户
USER appuser
# 暴露端口(根据您的应用程序需要调整)
EXPOSE 3000
# 设置健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:3000/api/v1/health || exit 1
# 运行应用程序
CMD ["./mapp-tile"]