dockerfile多阶段构建制作离线yum源

dockerfile多阶段构建的几种用法

1.以数字标记每个构建阶段

创建Dockerfile,并在当前目录创建test1.tx和test2.txt

# vim Dockerfile
FROM alpine
COPY test1.txt /

FROM alpine
COPY test2.txt /

FROM alpine
COPY --from=0 /test1.txt /tmp
COPY --from=1 /test2.txt /tmp

执行构建并查看结果

docker build -t alpine-test .
docker run -it --rm alpine-test sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    test   tmp    usr    var
/ # ls /test/
test1.txt  test2.txt

2.以名称标记每个构建阶段

FROM alpine as build1
COPY test1.txt /

FROM alpine as build2
COPY test2.txt /

FROM alpine
COPY --from=build1 /test1.txt /test/
COPY --from=build2 /test2.txt /test/

执行结果与以上相同

3.从现有镜像复制文件

FROM alpine
COPY --from=busybox /  /test/

执行构建并查看结果

docker build -t alpine-test .
docker run -it --rm alpine-test sh
/ # ls /test/
bin   dev   etc   home  root  tmp   usr   var

使用dockerfile多阶段构建制作离线yum源

仓库地址:https://github.com/willzhang/docker-images/tree/master/yum-repo

#########################################################################################
FROM centos:7.4.1708 as build0
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 \
    && yum-config-manager --add-repo $DOCKER_REPO \
    && yum install -y --downloadonly --downloaddir=/rpms $(cat /pkg.list)

#########################################################################################
FROM centos:7.5.1804 as build1
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 \
    && yum-config-manager --add-repo $DOCKER_REPO \
    && yum install -y --downloadonly --downloaddir=/rpms $(cat /pkg.list)

#########################################################################################
FROM centos:7.6.1810 as build2
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=build0 /rpms/* /rpms/
COPY --from=build1 /rpms/* /rpms/
RUN createrepo /rpms/	

#########################################################################################	
FROM nginx:alpine
RUN mkdir /usr/share/nginx/html/rpms
COPY --from=build2 /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/
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值