Reorganize Docker build infrastructure for better maintainability

- Restructure from ollama37/ to docker/ with clear separation
- Separate builder and runtime images into dedicated directories
- Group environment scripts in builder/scripts/ subdirectory
- Add comprehensive root-level README.md (257 lines)
- Add .dockerignore files for optimized build contexts
- Enhance shell scripts with shebangs and documentation headers
- Update docker-compose.yml to build locally instead of pulling
- Add environment variables for GPU and host configuration
- Remove duplicate Dockerfile and confusing nested structure

New structure:
  docker/
  ├── README.md (comprehensive documentation)
  ├── docker-compose.yml (local build support)
  ├── builder/ (build environment: CUDA 11.4 + GCC 10 + Go 1.24)
  │   ├── Dockerfile
  │   ├── README.md
  │   ├── .dockerignore
  │   └── scripts/ (organized environment setup)
  └── runtime/ (production image)
      ├── Dockerfile
      ├── README.md
      └── .dockerignore

This reorganization eliminates confusion, removes duplication, and
provides a professional, maintainable structure for Tesla K80 builds.
This commit is contained in:
Shang Chieh Tseng
2025-10-28 14:47:39 +08:00
parent 736cbdf52a
commit 8dc4ca7ccc
11 changed files with 569 additions and 0 deletions

51
docker/builder/Dockerfile Normal file
View File

@@ -0,0 +1,51 @@
FROM rockylinux/rockylinux:8
# Update OS and install cuda toolkit 11.4 and nvdia driver 470
RUN dnf -y update\
&& dnf -y install epel-release\
&& dnf -y config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo\
&& dnf -y module install nvidia-driver:470-dkms\
&& dnf -y install cuda-11-4
# Post install, setup path
COPY cuda-11.4.sh /etc/profile.d/cuda-11.4.sh
# Install gcc 10
RUN dnf -y install wget unzip lbzip2\
&& dnf -y groupinstall "Development Tools"\
&& cd /usr/local/src\
&& wget https://github.com/gcc-mirror/gcc/archive/refs/heads/releases/gcc-10.zip\
&& unzip gcc-10.zip\
&& cd gcc-releases-gcc-10\
&& contrib/download_prerequisites\
&& mkdir /usr/local/gcc-10\
&& cd /usr/local/gcc-10\
&& /usr/local/src/gcc-releases-gcc-10/configure --disable-multilib\
&& make -j ${nproc}\
&& make install
# Post install, setup path
COPY gcc-10.sh /etc/profile.d/gcc-10.sh
COPY gcc-10.sh /etc/ld.so.conf.d/gcc-10.conf
# Install cmake
ENV LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/cuda-11.4/lib64"
ENV PATH="/usr/local/cuda-11.4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
RUN dnf -y install openssl-devel\
&& cd /usr/local/src\
&& wget https://github.com/Kitware/CMake/releases/download/v4.0.0/cmake-4.0.0.tar.gz\
&& tar xvf cmake-4.0.0.tar.gz\
&& mkdir /usr/local/cmake-4\
&& cd /usr/local/cmake-4\
&& /usr/local/src/cmake-4.0.0/configure\
&& make -j ${nproc}\
&& make install
# Install go
RUN cd /usr/local\
&& wget https://go.dev/dl/go1.24.2.linux-amd64.tar.gz\
&& tar xvf go1.24.2.linux-amd64.tar.gz
# Post install, setup path
COPY go-1.24.2.sh /etc/profile.d/go-1.24.2.sh
ENV PATH="$PATH:/usr/local/go/bin"