# RPM Build Container for Track System
# Base: CtyunOS 4 (similar to CentOS/RHEL 8)
# Purpose: Build and test RPM package in production environment
FROM ctyunos:4-25.07-250605
LABEL maintainer="Track System Team"
LABEL description="Build environment for Track System RPM package"
# Add custom YUM repository configuration
RUN echo -e '[everything]\n\
name=ctyunos-everything\n\
baseurl=https://repo.ctyun.cn/testting/ctyunos-4-25.07/everything/$basearch/\n\
enabled=1\n\
gpgcheck=0\n' > /etc/yum.repos.d/ctyunos.repo && \
yum makecache
# Install system dependencies
RUN yum install -y \
curl \
git \
tar \
clang \
libacl-devel \
libselinux-devel \
# Build essentials
gcc \
gcc-c++ \
make \
pkg-config \
# Required libraries
openssl-devel \
libgit2-devel \
libcurl-devel \
# RPM building tools
rpm-build \
rpmdevtools \
# Development tools
wget \
vim \
# PostgreSQL client for testing
postgresql \
&& yum clean all && \
rm -rf /var/cache/yum
# Set Rust toolchain mirror sources for faster downloads
ENV RUSTUP_DIST_SERVER=https://rsproxy.cn
ENV RUSTUP_UPDATE_ROOT=https://rsproxy.cn/rustup
# Install Rust toolchain using Chinese mirror
RUN curl --proto '=https' --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh -s -- -y
# Set Rust environment
ENV PATH="/root/.cargo/bin:${PATH}" \
RUSTFLAGS="-C opt-level=3" \
CARGO_INCREMENTAL=0 \
RUST_LOG=info,track_system=debug
# Configure cargo mirror for faster crates download
RUN mkdir -p /root/.cargo && \
echo -e '[registry]\n\
[source.crates-io]\n\
replace-with = "rsproxy-sparse"\n\
[source.rsproxy]\n\
registry = "https://rsproxy.cn/crates.io-index"\n\
[source.rsproxy-sparse]\n\
registry = "sparse+https://rsproxy.cn/index/"\n\
[registries.rsproxy]\n\
index = "https://rsproxy.cn/crates.io-index"\n\
[net]\n\
git-fetch-with-cli = true' > /root/.cargo/config.toml && \
rustup component add rustfmt clippy
# Setup rpmbuild directory structure
RUN rpmdev-setuptree
# Create app user and group
RUN groupadd -r track && useradd -r -g track track
# Set working directory
WORKDIR /workspace
# Verify installation
RUN echo "=== Build Environment ===" && \
rustup --version && \
cargo --version && \
gcc --version | head -1 && \
rpm --version && \
git --version
# Default command
CMD ["/bin/bash"]