Docker多阶段构建离线yum源
概述
- 通过不同操作系统,下载依赖包制作离线源通过nginx提供yum服务。
1.构建阶段:构建 CentOS 7.4
FROM centos:7.4.1708 AS build0设置环境变量:
EPEL_RELEASE=https://dl.fedoraproject.org/.../epel-release-latest-7.noarch.rpmDOCKER_REPO=https://download.docker.com/.../docker-ce.repo
COPY yum-repo/pkg.list /
2. 发布阶段:使用 nginx 提供离线 yum 源
FROM nginx:alpine创建目录:
1
RUN mkdir /usr/share/nginx/html/rpms
将 RPM 和静态页面、Nginx 配置文件复制进去:
3.使用镜像提供 yum 源
构建镜像:
docker build -t offline-yum-repo .启动容器:
docker run -d -p 8080:80 offline-yum-repo在客户端通过配置
baseurl=http://server:8080/rpms/使用离线 yum 源。
4.dockerfile
# build
FROM centos:7.4 as build
ENV EPEL_RELEASE=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
DOCKER_REPO=https://download.docker.com/linux/centos/docker-ce.repo
COPY yum-repo/pkg.list /
RUN mkdir /rpms \
&& yum install -y $EPEL_RELEASE yum-utils createrepo \
&& yum-config-manager --add-repo $DOCKER_REPO \
&& yum install -y --downloadonly --downloaddir=/rpms $(cat /pkg.list)
COPY --from=build /rpms/* /rpms/
RUN createrepo /rpms/
# nginx
FROM nginx:alpine
RUN mkdir /usr/share/nginx/html/rpms
COPY --from=build /rpms/* /usr/share/nginx/html/rpms/
COPY yum-repo/index.html /usr/share/nginx/html/
COPY yum-repo/nginx.conf /etc/nginx/conf.d/default.conf/