This commit is contained in:
parent
ceaa43f87d
commit
4058ade763
@ -4,7 +4,6 @@
|
||||
|
||||
# Rust构建产物
|
||||
target/
|
||||
Cargo.lock
|
||||
|
||||
# IDE相关
|
||||
.vscode/
|
||||
|
||||
8
.github/workflows/docker.yml
vendored
8
.github/workflows/docker.yml
vendored
@ -8,8 +8,8 @@ on:
|
||||
branches: [ main, master ]
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
REGISTRY: crpi-8rsu3rjoi0n0hc4m.cn-hongkong.personal.cr.aliyuncs.com
|
||||
IMAGE_NAME: tmmapp/tiler
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@ -30,8 +30,8 @@ jobs:
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
username: ${{ secrets.ALIYUN_USERNAME }}
|
||||
password: ${{ secrets.ALIYUN_PASSWORD }}
|
||||
|
||||
- name: Extract metadata
|
||||
id: meta
|
||||
|
||||
71
Dockerfile
71
Dockerfile
@ -1,60 +1,49 @@
|
||||
# 使用官方Rust镜像作为构建阶段
|
||||
FROM rust:1.75-slim as builder
|
||||
FROM rust:1.88.0-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 \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
libpq-dev \
|
||||
build-essential \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 创建非root用户
|
||||
RUN pkg-config --version && \
|
||||
pkg-config --libs openssl && \
|
||||
pkg-config --cflags openssl
|
||||
|
||||
COPY Cargo.toml Cargo.lock ./
|
||||
COPY src ./src
|
||||
|
||||
COPY .sqlx .sqlx
|
||||
|
||||
ENV SQLX_OFFLINE=true
|
||||
RUN cargo build --release
|
||||
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
pkg-config \
|
||||
libssl-dev \
|
||||
libpq-dev \
|
||||
build-essential \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN pkg-config --version && \
|
||||
pkg-config --libs openssl && \
|
||||
pkg-config --cflags openssl
|
||||
|
||||
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
|
||||
EXPOSE 3060
|
||||
|
||||
# 运行应用程序
|
||||
CMD ["./mapp-tile"]
|
||||
Loading…
Reference in New Issue
Block a user