Docker构建基于阿里云epel源的CentOS7 epel源镜像

一、使用方法:docker 镜像方式构建离线源,方便在不同环境启动本地镜像源,启动方式可以是docker 也可以是 kubernetes

镜像地址:registry.baidubce.com/tools/yum:centos7u8-epel7
镜像大小:17GB

1、准备基础包和构建镜像工作目录

mkdir ~/build-epel7
mkdir /etc/yum.repos.d/bak/
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum -y makecache
reposync -p ./
cd /epel/Packages/
tar -zcvf epel7-1.tar.gz 0 2 3 4 9 a b c d e f g h i j k l m n o
tar -zcvf epel7-2.tar.gz p q r s t u v w x y z

mv epel7-1.tar.gz epel7-2.tar.gz ~/build-epel7

2、准备nginx安装包

wget https://nginx.org/download/nginx-1.19.1.tar.gz

3、准备nginx.conf配置问题

cat ~/build-epel7/nginx.conf

#user  nobody;
worker_processes auto;
worker_rlimit_nofile 65535;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  20480;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
          root /opt/repo;
          autoindex on;
          autoindex_exact_size off;
          autoindex_localtime on;
        }
        location /opt/repo/epel-7 {
          autoindex on;
          autoindex_exact_size off;
          autoindex_localtime on;
        }
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

4、准备docker-env.sh脚本

cat ~/build-epel7/docker-env.sh

#!/bin/sh
init_config(){

    yum -y update
    yum -y install make gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel createrepo reposync
}

install_sf(){

    cd /opt/repo/nginx-1.19.1
    ./configure --prefix=/usr/local/nginx
    make -j 16 && make install
    wait
    cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
    cat /tmp/nginx.conf >/usr/local/nginx/conf/nginx.conf
    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    /usr/local/nginx/sbin/nginx -t
    /usr/local/nginx/sbin/nginx -s reload

    createrepo /opt/repo/epel-7 
}

clean_env(){

    rm -rf /opt/repo/nginx-1.19.1
    rm -rf /tmp/
    rm -rf /root/anaconda-ks.cfg
    echo > /var/log/wtmp
    echo > /var/log/btmp
    echo>/var/log/lastlog
    echo > /var/log/secure
    echo > /var/log/messages
    echo>/var/log/syslog
    echo>/var/log/yum.log
    echo > ~/.bash_history
    yum clean all
}

main(){

    init_config && \
    install_sf && \
    clean_env

}

main

5、准备epel-7.repo

cat ~/build-epel7/epel-7.repo

[epel-7]
name=epel-7
baseurl=http://ip:port/epel-7
gpgcheck=0
enabled=1

6、准备Dockerfile

cat ~/build-epel7/Dockerfile

FROM centos:centos7.8.2003
MAINTAINER duanshuaixing "duanshuaixing@gmail.com"
ADD ./epel7-1.tar.gz /opt/repo/epel-7/Packages/
ADD ./epel7-2.tar.gz /opt/repo/epel-7/Packages/
ADD ./nginx-1.19.1.tar.gz /opt/repo/
ADD epel-7.repo /opt/repo/
ADD ./nginx.conf /tmp/
ADD ./docker-env.sh /tmp/
RUN /tmp/docker-env.sh
WORKDIR /opt/repo
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

7、给脚本添加执行权限并构建镜像

cd ~/build-epel7/
chmod a+x docker-env.sh
docker build -t registry.baidubce.com/tools/yum:centos7u8-epel7 .
docker push registry.baidubce.com/tools/yum:centos7u8-epel7
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值