首先我选择了在centos6里部署nginx的镜像,如果大家选择的是centos7,自己重新修改吧

这里的问题点有几个:

1,make的版本选择,因为我下载了最新的cmake,需要c++11编译

这玩意的安装比较麻烦,在前面一篇随笔里已经写过gcc在centos里的安装

2,docker容器的层级,我使用了 以下办法来减少层级,不在同一个层级,有些操作会出现问题哦

RUN .....   \

&& .....

3,CMD和Endpoint的使用,我这里只用了endpoint,但nginx作为后台运行,需要额外添加参数

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

4,调试,在调试过程中最好使用“docker run -itd nginx_centos6”,把-itd改为-it,这样能够查看到出错信息

5,真正部署时,我使用了dockercompose文件,可以让很多参数进行额外的配置

# Version 0.1

FROM centos:6

MAINTAINER kuba si812cn@163.com
ENV NGINX_UPSYNC_MODULE_VERSION 2.1.0
ENV CMAKE_VERSION 3.12.4
ENV ZLIB_VERSION 1.2.11
ENV PCRE_VERSION 8.42
ENV OPENSSL_VERSION 1_1_1
ENV NGINX_HTTP_CONCAT_VERSION 1.2.2
ENV GEOIP_VERSION 1.4.8
ENV NGINX_VERSION 1.15.6 RUN mkdir -p /opt/software
WORKDIR /opt/software/
RUN yum -y update;yum -y install epel-release wget tar xz unzip make autoconf automake curl curl-devel gcc gcc-c++ gcc-g77 kernel-devel gd gd-devel mlocate \
&& yum -y install centos-release-scl-rh centos-release-scl \
&& yum -y install devtoolset-6-gcc.x86_64 devtoolset-6-gcc-c++.x86_64 \
&& yum -y install libtool \
&& scl enable devtoolset-6 bash \
&& updatedb \
&& yum clean all \
&& source /opt/rh/devtoolset-6/enable \
&& export CC=/opt/rh/devtoolset-6/root/usr/bin/gcc \
&& export CXX=/opt/rh/devtoolset-6/root/usr/bin/g++ \
&& wget https://github.com/weibocom/nginx-upsync-module/archive/v${NGINX_UPSYNC_MODULE_VERSION}.zip \
&& unzip v${NGINX_UPSYNC_MODULE_VERSION}.zip \
&& rm -f v${NGINX_UPSYNC_MODULE_VERSION}.zip \
&& wget https://github.com/Kitware/CMake/archive/v${CMAKE_VERSION}.zip \
&& unzip v${CMAKE_VERSION}.zip \
&& rm -f v${CMAKE_VERSION}.zip \
&& cd CMake-${CMAKE_VERSION}/ \
&& ./bootstrap \
&& gmake \
&& make install \
&& cd ../ \
&& wget https://github.com/madler/zlib/archive/v${ZLIB_VERSION}.zip \
&& unzip v${ZLIB_VERSION}.zip \
&& rm -f v${ZLIB_VERSION}.zip \
&& cd zlib-${ZLIB_VERSION}/ \
&& ./configure \
&& make \
&& make install \
&& cd ../ \
&& wget https://ftp.pcre.org/pub/pcre/pcre-${PCRE_VERSION}.zip \
&& unzip pcre-${PCRE_VERSION}.zip \
&& rm -f pcre-${PCRE_VERSION}.zip \
&& cd pcre-${PCRE_VERSION}/ \
&& ./configure --prefix=/usr/local/pcre \
&& make \
&& make install \
&& cd ../ \
&& wget https://github.com/openssl/openssl/archive/OpenSSL_${OPENSSL_VERSION}.zip \
&& unzip OpenSSL_${OPENSSL_VERSION}.zip \
&& rm -f OpenSSL_${OPENSSL_VERSION}.zip \
&& cd openssl-OpenSSL_${OPENSSL_VERSION}/ \
&& ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --shared \
&& make \
&& make install \
&& cd /usr/local/ \
&& ln -sf openssl ssl \
&& echo "/usr/local/openssl/lib" >>/etc/ld.so.conf \
&& ldconfig \
&& echo "export OPENSSL=/usr/local/openssl/bin">>/etc/profile \
&& echo "export PATH=\$OPENSSL:\$PATH">>/etc/profile \
&& source /etc/profile \
&& ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl \
&& ln -sf /usr/local/openssl/include/openssl /usr/include/openssl \
&& ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /lib/libcrypto.so.6 \
&& ldconfig -v \
&& cd /opt/software/ \
&& wget https://github.com/alibaba/nginx-http-concat/archive/${NGINX_HTTP_CONCAT_VERSION}.zip \
&& unzip ${NGINX_HTTP_CONCAT_VERSION}.zip \
&& rm -f ${NGINX_HTTP_CONCAT_VERSION}.zip \
&& wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz \
&& tar zxvf GeoIP.tar.gz \
&& rm -f GeoIP.tar.gz \
&& cd GeoIP-${GEOIP_VERSION}/ \
&& ./configure \
&& make \
&& make install \
&& updatedb \
&& locate libGeoIP.so.1 \
&& echo "/usr/local/lib" >> /etc/ld.so.conf \
&& ldconfig \
&& cd ../ \
&& wget https://github.com/nginx/nginx/archive/release-${NGINX_VERSION}.zip \
&& unzip release-${NGINX_VERSION}.zip \
&& rm -f release-${NGINX_VERSION}.zip \
&& groupadd www \
&& useradd -g www www -s /bin/false \
&& cd nginx-release-${NGINX_VERSION}/ \
&& ./auto/configure --prefix=/usr/local/nginx --user=www --group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --without-http_memcached_module --with-http_ssl_module --with-openssl=/opt/software/openssl-OpenSSL_${OPENSSL_VERSION}/ --with-http_realip_module --with-http_image_filter_module --with-http_mp4_module --with-http_flv_module --with-pcre=/opt/software/pcre-${PCRE_VERSION}/ --with-zlib=/opt/software/zlib-${ZLIB_VERSION}/ --with-http_addition_module --with-http_geoip_module --with-http_sub_module --with-http_degradation_module --add-module=/opt/software/nginx-upsync-module-${NGINX_UPSYNC_MODULE_VERSION}/ --add-module=/opt/software/nginx-http-concat-${NGINX_HTTP_CONCAT_VERSION}/ \
&& make \
&& make install ADD ./nginx.conf /usr/local/nginx/conf/
ADD ./html/ /usr/local/nginx/html/ ENTRYPOINT ["/usr/local/nginx/sbin/nginx","-g","daemon off;"] EXPOSE 80 443  

nginx.conf

user  www www;
worker_processes 4; error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; pid logs/nginx.pid; events {
worker_connections 8096;
multi_accept on;
use epoll;
} 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; client_max_body_size 10M;
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; error_page 404 /errors/404.html;
error_page 500 502 503 504 /errors/50x.html; location ^~ /errors/ {
root html;
} location / {
root html;
index index.html index.htm;
}
} }

创建镜像

docker build -t nginx_centos6 ./

启动镜像

docker run -it nginx_centos6

这样启动后,正常来说使用http://127.0.0.1是访问拒绝的,因为Docker里有自己的IP,需要隐射一下

我选择使用了docker_compose来配置隐射

# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
# version: '2' services:
nginx0:
image: nginx_centos6
restart: always
container_name: nginx0
ports:
- 80:80

  执行docker-compose -f docker-compose-nginx.yaml up -d 2>&1

一切OK

docker镜像制作 centos6 nginx1.15.6 with NGINX_UPSYNC_MODULE的更多相关文章

  1. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  2. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作centos6.5-14

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作centos6.5-14 欢迎加QQ群:1026880196 进行交流学习 制作OpenSta ...

  3. docker研究-4 docker镜像制作

    这次实验以centos镜像为基础镜像进行相关docker镜像制作. 1. 下载centos镜像 [root@localhost ~]# docker pull centosUsing default ...

  4. 《Docekr入门学习篇》——Docker镜像制作

    Docker镜像制作 Docker镜像的构建分为两种,一种是手动构建,一种是dockerfile(自动构建) 手动构建 基于centos镜像进行构建制作Nginx镜像 [root@rbtnode1 ~ ...

  5. Docker 镜像制作教程:针对不同语言的精简策略

    本系列文章将分为三个部分: 第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环.在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影 ...

  6. Nginx+PHP7.3.9 Docker镜像制作

    最近因项目需要制作了多个版本的php docker镜像,制作过程可谓是一波三折,因基于yum的方式安装php的方式在安装扩展插件时很不方便,不容易找到插件对应的yum源,所以PHP在docker镜像中 ...

  7. doris 0.9.0版本docker镜像制作与使用

    1. 安装docker 详情请参见本人博客 2. 编译doris 详情请参见doris官网文档 3. 在编译好的doris output文件夹下编写两个Dockerfile 3.1  Dockerfi ...

  8. presto-gateway 试用以及docker 镜像制作

    presto-gateway 是 lyft 团队开源 的prestodb 的工具.以下是一个简单的试用,以及碰到问题的解决 还有就是docker 镜像的制作 Dockerfile 很简单,本地构建然后 ...

  9. 实战【docker 镜像制作与使用】

    一.制作docker 镜像 使用spring boot 构建一个简单的web 项目,返回 “Hello,World ”字符串,使用 Maven 打成 jar 包,使用的Linux 环境是 Centos ...

随机推荐

  1. Go语言学习之9 网络协议TCP、Redis与聊天室

    主要内容 1. Tcp编程2. redis使用 1. Tcp编程 (1)简介       Golang是谷歌设计开发的语言,在Golang的设计之初就把高并发的性能作为Golang的主要特性之一,也是 ...

  2. Swapping Characters CodeForces - 903E (字符串模拟)

    大意: 给定k个字符串, 长度均为n, 求是否存在一个串S, 使得k个字符串都可以由S恰好交换两个字符得到. 暴力枚举交换的两个字符的位置, 计算出交换后与其他串不同字符的个数, 若为1或>2显 ...

  3. C# 使用事务transaction

    C# 事务里面如果只是针对单数据库,则可以使用SqlTransaction,跨数据库使用TransactionScope.

  4. jvm内存快照dump文件太大,怎么分析

    1.场景 通常,使用eclipse的mat图形化工具打开dump的时候都会内存溢出. 对于比较小的dump,eclipse可以打开,但一旦dump文件太大,eclipse就有点束手无策. 这时候怎么办 ...

  5. (02) 第一个springboot程序

    1. 创建一个springboot程序 1. idea 自带的springboot插件 2. 直接从https://start.spring.io 创建好程序下载下来, 之后覆盖你的创建的项目 2. ...

  6. Spring Boot + Spring Cloud 实现权限管理系统 配置中心(Config、Bus)

    技术背景 如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多.此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启, ...

  7. PB测款方法 店铺运费模板 设置

    https://www.wishhack.com/article/44.html 子账号有权限设置运费

  8. 微服务-开发框架之springboot by 大雄daysn

    目录 一.关于springboot 二.springboot的实践 2.1发布一个rest的api 2.2端点 2.3健康检查 2.4远程监控 一.关于springboot 由来:spring1.0- ...

  9. vuex-Module

    Vuex 允许将 store 分割成模块(module). 每个模块拥有自己的 state.mutation.action.getter.甚至是嵌套子模块 const moduleA = { stat ...

  10. 关于空指针NULL、野指针、通用指针 (转)

    reference:https://www.cnblogs.com/losesea/archive/2012/11/16/2772590.html 首先说一下什么是指针,只要明白了指针的含义,你就明白 ...