diff --git a/.dockerignore b/.dockerignore index 9c9cc1f..7d62e35 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,7 +4,6 @@ # Rust构建产物 target/ -Cargo.lock # IDE相关 .vscode/ diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c7993d4..4455776 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -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 diff --git a/Dockerfile b/Dockerfile index 97b2e3b..23354a8 100644 --- a/Dockerfile +++ b/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"] \ No newline at end of file +CMD ["./mapp-tile"] \ No newline at end of file