sync
Some checks are pending
Docker Build and Push / build (push) Waiting to run

This commit is contained in:
tsuki 2025-08-01 17:31:24 +08:00
parent ceaa43f87d
commit 4058ade763
3 changed files with 35 additions and 47 deletions

View File

@ -4,7 +4,6 @@
# Rust构建产物 # Rust构建产物
target/ target/
Cargo.lock
# IDE相关 # IDE相关
.vscode/ .vscode/

View File

@ -8,8 +8,8 @@ on:
branches: [ main, master ] branches: [ main, master ]
env: env:
REGISTRY: ghcr.io REGISTRY: crpi-8rsu3rjoi0n0hc4m.cn-hongkong.personal.cr.aliyuncs.com
IMAGE_NAME: ${{ github.repository }} IMAGE_NAME: tmmapp/tiler
jobs: jobs:
build: build:
@ -30,8 +30,8 @@ jobs:
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
registry: ${{ env.REGISTRY }} registry: ${{ env.REGISTRY }}
username: ${{ github.actor }} username: ${{ secrets.ALIYUN_USERNAME }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.ALIYUN_PASSWORD }}
- name: Extract metadata - name: Extract metadata
id: meta id: meta

View File

@ -1,60 +1,49 @@
# 使用官方Rust镜像作为构建阶段 FROM rust:1.88.0-slim as builder
FROM rust:1.75-slim as builder
# 设置工作目录
WORKDIR /usr/src/app 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 \ RUN apt-get update && apt-get install -y \
ca-certificates \ pkg-config \
libssl-dev \
libpq-dev \ libpq-dev \
build-essential \
&& rm -rf /var/lib/apt/lists/* && 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 RUN groupadd -r appuser && useradd -r -g appuser appuser
# 设置工作目录
WORKDIR /app WORKDIR /app
# 从构建阶段复制二进制文件
COPY --from=builder /usr/src/app/target/release/mapp-tile /app/mapp-tile COPY --from=builder /usr/src/app/target/release/mapp-tile /app/mapp-tile
# 复制配置文件(如果有的话)
COPY .env* ./
# 更改文件所有权
RUN chown -R appuser:appuser /app RUN chown -R appuser:appuser /app
# 切换到非root用户
USER appuser USER appuser
# 暴露端口(根据您的应用程序需要调整) EXPOSE 3060
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"] CMD ["./mapp-tile"]