docker构建openeuler22.03x86的nginx-1.26.2镜像

#宿主机为ubuntu20.04
#当前随意创建一个目录dockerfile

#1.安装依赖
apt install make gcc -y 

apt-get install libpcre3 libpcre3-dev -y 
apt-get install openssl libssl-dev -y

apt-get install zlib1g-dev -y

apt-get install libxml2 libxslt1.1 libxml2-dev libxslt1-dev -y

#2.下载nginx的1.26.2的源码包,解压编译
./configure  --prefix=/usr/local/nginx  --conf-path=/etc/nginx/nginx.conf   --error-log-path=/var/log/nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module   --with-http_gunzip_module --with-http_gzip_static_module   && make && make install

#3.拷贝依赖文件以及nginx编译的程序
cp /usr/lib/x86_64-linux-gnu/libxslt.so.1.1.34 ./

cp /usr/lib/x86_64-linux-gnu/libexslt.so.0.8.20 ./

cp -r /etc/nginx  ./nginx_conf && mkdir ./nginx_conf/conf.d

cp -r /usr/local/nginx  ./nginx && rm -rf ./nginx/html && rm -rf ./nginx/logs

#3.修改./nginx_conf/nginx.conf
vim ./nginx_conf/nginx.conf

user nobody;
worker_processes  1;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    proxy_hide_header X-Powered-By;
    proxy_hide_header Server;
    proxy_buffer_size 1024k;
    proxy_buffers 16 1024k;
    client_max_body_size 30m;
    proxy_busy_buffers_size 2048k;
    proxy_temp_file_write_size 2048k;
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers Content-Type,X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    log_format  main_detail     '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
                                '$status $body_bytes_sent "$http_referer" '
                                '"$http_user_agent" - $host - $request_body';
    access_log off;
    #access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    underscores_in_headers on;
    #tcp_nopush     on;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

#4.编写yum的源
vim openEuler.repo

[osrepo]
name=osrepo
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS/OS/x86_64/
enabled=1

gpgcheck=0
gpgkey=https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler


#5.编写dockerfile构建nginx镜像
vim Dockerfile

FROM openeuler22.03
COPY nginx_conf /etc/nginx
COPY nginx /usr/local/nginx
COPY openEuler.repo /etc/yum.repos.d/openEuler.repo
COPY libxslt.so.1.1.34 /usr/lib64/libxslt.so.1
COPY libexslt.so.0.8.20 /usr/lib64/libexslt.so.0

RUN mkdir -p /var/log/nginx && sed -i '/^export TMOUT=300$/d' /etc/bashrc && yum clean all && yum makecache &&  yum -y install telnet vim && ln -s /usr/lib64/libpcre.so.1 /usr/lib64/libpcre.so.3

WORKDIR /etc/nginx

CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

EXPOSE 80

#6.当前目录要有以下几个文件
Dockerfile  libexslt.so.0.8.20  libxslt.so.1.1.34  nginx   nginx_conf  openEuler.repo

docker build -t openeuler2203_nginx:1.26.2 . 等待打包完成即可

#注意
nginx的配置文件 /etc/nginx/nginx.conf
nginx的配置文件目录 /etc/nginx/conf.d

类比一下,其他版本或者arm架构的都可以构建完成了




### 如何在Docker安装和配置openEuler 22.03镜像 #### 卸载旧版本的 Docker 如果系统上已经存在旧版 Docker,则需先将其移除,以防止新旧版本冲突。命令如下: ```bash yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine[^2] ``` #### 安装必要的依赖包并设置仓库 为了能够顺利拉取 openEuler 镜像,在此之前要确保已正确设置了 Docker 的源,并且可以访问到 openEuler 的官方镜像。 对于 CentOS 或 RHEL 类似发行版来说,可以通过以下方式来更新软件库列表以及添加额外所需的工具: ```bash dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo ``` 接着安装一些必要的组件用于支持 yum/dnf 使用 HTTPS 方式的下载操作: ```bash dnf install -y dnf-plugins-core ``` #### 安装最新稳定版 Docker Engine 和 Docker Compose 插件 通过 DNF 来获取最新的 Docker 版本及其配套插件: ```bash dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin[^1] ``` 启动服务并将它设为开机自启项: ```bash systemctl start docker && systemctl enable docker ``` #### 下载 OpenEuler 22.03 LTS 镜像 利用 `docker pull` 命令可以直接从 Docker Hub 上抓取所需的操作系统映像文件至本地环境之中: ```bash docker pull openeuler/openEuler-22.03-LTS ``` 确认所下载的内容无误后可查看当前机器上的所有可用容器图像: ```bash docker images ``` #### 运行 OpenEuler 交互式会话 创建一个新的基于 openEuler 22.03 LTS 映射出来的实例来进行测试或者开发工作: ```bash docker run -it openeuler/openEuler-22.03-LTS /bin/bash ``` 此时应该可以看到进入了该 Linux 发行版所提供的 Bash Shell 中去了。 #### 编写 Dockerfile 构建个性化镜像 (可选) 如果有更复杂的应用场景需求的话,还可以编写一个名为 "Dockerfile" 的定义文档来自定义构建过程中的各项参数设定;比如预装某些特定程序集或是调整内核选项等等... ```Dockerfile FROM openeuler/openEuler-22.03-LTS LABEL maintainer="admin@example.com" RUN dnf update -y && dnf clean all COPY . /app WORKDIR /app CMD ["bash"] ``` 保存上述内容到文本编辑器里另存为 “Dockerfile”,随后执行下面这条指令即可完成整个打包流程: ```bash docker build -t my-p 8080:80 -v $(pwd):/usr/src/myapp -w /usr/src/myapp my-openeuler-app bash ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值