当前位置:首页 » 编程软件 » docker自编译nginx

docker自编译nginx

发布时间: 2022-09-09 04:43:26

Ⅰ 如何制作docker nginx镜像

先去下载一个docker的nginx镜像源,建议下国内的源的镜像 ,下好以后用这个启动就好了。

Ⅱ Docker 搭建 Nginx 集群

实现负载均衡其实并不难、只是很多人不敢去尝试而已,简单来说就是:

在nginx里面配置一个upstream,然后把相关的服务器ip都配置进去。然后采用轮询的方案,然后在nginx里面的配置项里,proxy-pass指向这个upstream,这样就能实现负载均衡.

nginx的负载均衡有4种模式:

1)、轮询(默认)

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2)、weight

    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

3)、ip_hash

    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4)、fair , url_hash(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    docker pull nginx ( docker pull cloud.io/nginx 这个稍微快点 )

    docker run -itd --name nginx1 -p 8080:80 nginx /bin/bash -- 主

    docker run -itd --name nginx2 nginx /bin/bash

    docker run -itd --name nginx3 nginx /bin/bash

    docker ps 查看

       docker network ls

docker nerwork inspect d530da7ebbd3

       进入nginx1 (主)

            docker exec -it d530da7ebbd3 /bin/bash   

            安装 vim 编辑器 (如有其他、尽可随意)   ---  注意:nginx2、nginx3 均安装 编辑器、下文不再赘述

                        1.  apt update   2.  apt install vim 

            cd /etc/nginx/

            vim nginx.conf

    进入nginx2

                docker exec -it e59de010efff /bin/bash

                    cd /usr/share/nginx/html/

                    vim index.html

                            Welcome to nginx! 后添加: From 172.17.0.3:80 即可

            进入nginx3

                docker exec -it 0f12240cb622 /bin/bash

                    cd /usr/share/nginx/html/

                    vim index.html

                            Welcome to nginx! 后添加: From 172.17.0.4:80 即可

重启三个nginx服务   service nginx restart

此时如果 docker容器会关闭、因此需要再次重启

        docker start d530da7ebbd3

        docker start e59de010efff

        docker start 0f12240cb622

测试结果

补充:

    上述说到 负载均衡有4种模式、

配置分别如下:

轮询模式:

    upstream webname {

        server192.168.0.1:8080;

        server192.168.0.2:8080;

  }

weight 模式:

    upstream webname {

        server192.168.0.1:8080 weight=2;

        server192.168.0.2:8080 weight=1;

  }

ip_hash模式:

 upstream webname {

    ip_hash;

    server192.168.0.1:8080;

    server192.168.0.2:8080;

  }

其他配置:

设置某一个节点为backup,那么一般情况下所有请求都访问server1,当server1挂掉或者忙的的时候才会访问server2

upstream webname {

    server192.168.0.1:8080;

    server192.168.0.2:8080 backup;

  }

设置某个节点为down,那么这个server不参与负载。

upstream webname {

    server192.168.0.1:8080;

    server192.168.0.2:8080 down;

  }

Ⅲ docker如何修改nginx配置

如果是挂载的配置文件,外面修改,然后重启docker容器;
如果不是挂载的配置文件,docker exec -it 容器ID /bin/sh进入容器修改并重启NGINX。

Ⅳ docker-compose快速启动nginx

创建nginx目录,目录下创建docker-compose.yml文件如下:

nginx目录下创建创建nginx.conf文件,根据实际情况配置,我这里写一个示例:

在nginx目录下创建build目录,将前端静态文件拷贝到下边

在nginx目录下执行如下命令启动服务

启动之后,nginx就可以正常使用了。

Ⅳ Docker中使用Nginx部署多应用

最近打算将系统中的应用全部用docker进行部署,能够进行统一管理。
花费时间最多的问题是:

这两种方式各有优势各有痛点:

我最终还是选择使用一个nginx容器代理所有应用,因为如果多个域名不能都使用80,443端口访问确实很难受。
这篇文章包含了docker中很多元素,如果用的不对,也希望大家斧正。

步骤如下:

我之前已经准备好了两个简单的应用镜像,访问返回静态页面,启动两个应用。

创建一个appbridge用于容器之间的通信。

数据卷可以映射宿主机和容器中的目录,可以方便配置,修改内容和数据持久化。也可以在运行容器 -v 参数自动创建数据卷,这里为了清晰就单独拎出来。

test2应用相同方式创建。

因为需要配置https,先用certbot为域名生成证书和密钥(步骤省略),拷贝证书和密钥到数据卷ssl-certs-vol中。

修改nginx-vol数据卷中的nginx.conf文件,能够映射到nginx容器的配置。

添加服务器配置,这里配置了相同域名的三个端口的反向代理应用,应用地址可使用别名。

进入nginx容器,重新启动nginx

浏览器访问

Ⅵ 如何使用Dockerfile构建镜像

你好,使用方法如下:
Dockerfile结构
dockerfile由4部分信息组成:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..

# Base image to use, this must be set as the first line
FROM ubuntu

# Maintainer: docker_user <docker_user at email.com> (@docker_user)
MAINTAINER docker_user [email protected]

# Commands to update the image
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# Commands when creating a new container
CMD /usr/sbin/nginx

其中#表注释,可以标注一些说明性的文字。
FROM关键字指定镜像的来源,默认为DockerHub,也可以写私有仓库的镜像,例如:localhost:5000/centos:6.7,如果本地已经存在指定的镜像名称,则会从本地缓存直接获取。MAINTAINER 指定镜像的作者,之后为镜像操作执行RUN、ADD等,最后是容器启动时发起的指令。
Dockerfile中的指令
FROM: 指定镜像名称,格式为FROM <image> 或FROM <image>:<tag>,例如FROM ubuntu 或 FROM ubuntu:12.04
MAINTAINER: 镜像作者 ,格式为 MAINTAINER <name>
RUN:格式为 RUN <command> 或 RUN ["executable", "param1", "param2"]。
前者将在 shell 终端中运行命令,即 /bin/sh -c;后者则使用 exec 执行。指定使用其它终端可以通过第二种方式实现,例如 RUN ["/bin/bash", "-c", "echo hello"]。
每条 RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用 \ 来换行。
CMD:支持三种格式
1.CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;
2.CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
3.CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;
指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
EXPOSE:格式为 EXPOSE <port> [<port>...]。
告诉 Docker 服务端容器暴露的端口号,供互联系统使用。在启动容器时需要通过 -P,Docker 主机会自动分配一个端口转发到指定的端口。
ENV:格式为 ENV <key> <value>。 指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。这就对应程序语言中的变量定义,可在需要的时候引用。例如:

1
2
3
4

ENV PG_MAJOR 9.3
ENV PG_VERSION 9.3.4
RUN curl -SL http://example.com/postgres-$PG_VERSION.tar.xz | tar -xJC /usr/src/postgress && …
ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH

ADD:格式为 ADD <src> <dest>。
该命令将复制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)。
COPY:格式为 COPY <src> <dest>。
复制本地主机的 <src>(为 Dockerfile 所在目录的相对路径)到容器中的 <dest>。当使用本地目录为源目录时,推荐使用 COPY。
COPY和ADD的不同就是:ADD多了自动解压和支持URL路径的功能。
ENTRYPOINT:
两种格式:
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2(shell中执行)。
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。
每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。
CMD和ENTRYPOINT比较:两个命令都是只能使用一次,并且都是在执行docker run指令时运行,如果有多个,只执行最后一条。
两者的不同在于参数的传递方式,如果在Dockerfile中定义如下指令

1

CMD echo hello



1

ENTRYPOINT ["echo","hello"]

那么在运行命令docker run containerId echo hello时,指定了CMD的输入结果为world,可以看出Dockerfile中指定的命令被覆盖了,而指定了ENTRYPOINT时,输出结果为hello echo world,可以看出指定的命令被作为ENTRYPOINT指定指令的参数了。

VOLUME:格式为 VOLUME ["/data"]。创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。不过此属性在Dockerfile中指定并没有什么意义,因为没有办法指定本地主机的目录。如果需要指定挂载点可以在执行docker run命令时指定:

1

docker run -it -v /home/fengzheng/ftp/:/data 859666d51c6d /bin/bash

USER:格式为 USER daemon。指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。
当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户,例如:RUN groupadd -r postgres && useradd -r -g postgres postgres。要临时获取管理员权限可以使用 gosu,而不推荐 sudo。
WORKDIR:格式为 WORKDIR /path/to/workdir。为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录。可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。例如

1
2
3
4

WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd

则最终路径为 /a/b/c。
ONBUILD:格式为 ONBUILD [INSTRUCTION]。
配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令。
例如,Dockerfile 使用如下的内容创建了镜像 image-A。

1
2
3
4

[...]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src
[...]

如果基于 image-A 创建新的镜像时,新的Dockerfile中使用 FROM image-A指定基础镜像时,会自动执行ONBUILD 指令内容,等价于在后面添加了两条指令。

1
2
3
4
5

FROM image-A

#Automatically run the following
ADD . /app/src
RUN /usr/local/bin/python-build --dir /app/src

使用 ONBUILD 指令的镜像,推荐在标签中注明,例如 ruby:1.9-onbuild。
基于CentOS6.7并源码安装nginx
首先准备了nginx-1.9.9.tar.gz安装包和CentOS6-Base-163.repo(163源),将这两个文件放到同一目录下,并在此目录下创建名称为Dockerfile的文件。之后在此文件中实现源替换、nginx编译安装、及一些依赖包的安装,Dockerfile内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# this is a test ubuntu 12.04 image dockerfile
# Author:fengzheng

# Base image,this must be set as the first line
#localhost:5000/centos:6.7是我的私有仓库的镜像,可替换为centos:6.7(DockerHub中的镜像)
FROM localhost:5000/centos:6.7

MAINTAINER fengzheng

# Commands to update the image

RUN mkdir /usr/nginx1.9.9
ADD nginx-1.9.9.tar.gz /usr/nginx1.9.9/
#RUN yum -y install tar
#RUN tar -zxvf /usr/nginx1.9.9/nginx-1.9.9.tar.gz
RUN cd /etc/yum.repos.d/ && mv CentOS-Base.repo CentOS-Base.repo.bak
ADD CentOS6-Base-163.repo /etc/yum.repos.d/
RUN cd /etc/yum.repos.d/ && mv CentOS6-Base-163.repo CentOS-Base.repo \
&& yum clean all && yum makecache \
&& yum -y install gcc \
&& yum -y install yum install -y pcre-devel \
&& yum -y install zlib zlib-devel \
&& yum -y install openssl openssl--devel \
&& cd /usr/nginx1.9.9/nginx-1.9.9/ && ./configure && make && make install

#如果设置daemon off; nginx无法启动
#RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# Commands when creating a new container
# 启动nginx 需进入/usr/local/nginx/sbin 执行./configure
CMD /bin/bash

最后执行命令"docker build -t nginx-centos:6.7 ."
其中.表示在当前目录下搜索Dockerfile文件,-t参数指定镜像名称和tag。

Ⅶ docker 怎么配置nginx 文件路径

#docker pull nginx
#docker run -itd -p 80:80 nginx 启动nginx
nginx默认目录是/etc/nginx,如果要自定义,指定本地目录

#docker run -itd -p 80:80 -v /usr/local/目录名:/etc/nginx nginx

Ⅷ nginx docker怎么配置

安装Nginx可以选择直接使用ubuntu的apt-get install nginx命令来安装,这种安装方式最简单方便,但是Nginx的版本可能是比较老的版本,所以选择编译安装的方式。

Ⅸ 开源Nginx可视化配置工具,快速搞定Nginx配置难题

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个Nginx界面配置工具——nginxWebUI。

nginxWebUI是一款图形化管理nginx配置的工具, 可以使用网页来快速配置nginx的各项功能, 包括http协议转发、tcp协议转发、反向代理、负载均衡、静态html服务器、ssl证书自动申请、续签、配置等,配置好后可一建生成nginx.conf文件, 同时可控制nginx使用此文件进行启动与重载,完成对nginx的图形化控制闭环。

本项目是基于solon的web系统,数据库使用h2, 因此服务器上不需要安装任何数据库。

本系统通过Let's encrypt申请证书,使用acme.sh脚本进行自动化申请和续签,开启续签的证书将在每天凌晨2点进行续签,只有超过60天的证书才会进行续签,只支持在linux下签发证书。

添加tcp/ip转发配置支持时, 一些低版本的nginx可能需要重新编译,通过添加–with-stream参数指定安装stream模块才能使用,但在ubuntu 18.04下,官方软件库中的nginx已经带有stream模块,不需要重新编译。本系统如果配置了tcp转发项的话,会自动引入ngx_stream_mole.so的配置项,如果没有开启则不引入,最大限度优化ngnix配置文件。

打开 http://ip:8080 进入主页。

登录页面,第一次打开会要求初始化管理员账号。

进入系统后,可在管理员管理里面添加修改管理员账号。

在http参数配置中可以配置nginx的http项目,进行http转发,默认会给出几个常用配置,其他需要的配置可自由增删改查,可以勾选开启日志跟踪,生成日志文件。

在TCP参数配置中可以配置nginx的steam项目参数,进行tcp转发。

在反向代理中可配置nginx的反向代理即server项功能,可开启ssl功能,可以直接从网页上上传pem文件和key文件,或者使用系统内申请的证书,可以直接开启http转跳https功能,也可开启http2协议。

在负载均衡中可配置nginx的负载均衡即upstream项功能,在反向代理管理中可选择代理目标为配置好的负载均衡。

在证书管理中可添加证书,并进行签发和续签,开启定时续签后,系统会自动续签即将过期的证书。

备份文件管理,这里可以看到nginx.cnf的备份 历史 版本,nginx出现错误时可以选择回滚到某一个 历史 版本。

最终生成conf文件,可在此进行进一步手动修改,确认修改无误后,可覆盖本机conf文件,并进行校验和重启,可以选择生成单一nginx.conf文件还是按域名将各个配置文件分开放在conf.d下。

远程服务器管理,如果有多台nginx服务器,可以都部署上nginxWebUI,然后登录其中一台,在远程管理中添加其他服务器的ip和用户名密码,就可以在一台机器上管理所有的nginx服务器了。

提供一键同步功能,可以将某一台服务器的数据配置和证书文件同步到其他服务器中。

本系统提供http接口调用,只要开 http://xxx.xxx.xxx.xxx:8080/doc.html 即可查看smat-doc接口页面。

接口调用需要在header中添加token,其中token的获取需要在管理员管理中,打开用户的接口调用权限,然后通过用户名密码调用获取token接口,才能得到token,然后在knife4j的文档管理中设置全局token。

jar安装说明:

以Ubuntu操作系统为例:

1 安装java运行环境和nginx

Ubuntu:

Centos:

Windows:

2 下载最新版发行包jar

有新版本只需要修改路径中的版本即可。

3 启动程序

docker安装说明

本项目制作了docker镜像,同时包含nginx和nginxWebUI在内,一体化管理与运行nginx。

1 安装docker容器环境

ubuntu:

centos:

2 下载镜像

3 启动容器

—END—

开源协议:MulanPSL-1.0

开源地址:https://github.com/cym1102/nginxWebUI

Ⅹ Ubuntu 下使用 Docker 安装 Nginx

docker pull nginx

将 nginx.conf 配置文件放在 /your/dir/conf/ 下。

将 default.conf 配置文件放在 /your/dir/conf/conf.d 下。

将容器 80 端口映射到主机 80 端口。

热点内容
安卓如何越狱刷系统 发布:2025-03-26 02:00:46 浏览:546
华为荣耀登录密码是多少 发布:2025-03-26 02:00:44 浏览:257
androiddimens 发布:2025-03-26 01:37:00 浏览:472
电视出现认证服务器无响应怎么办 发布:2025-03-26 01:33:21 浏览:686
linux安装mysql55 发布:2025-03-26 01:31:10 浏览:759
如何远程登录家里的服务器 发布:2025-03-26 01:10:49 浏览:763
河北长城dns服务器地址 发布:2025-03-26 01:07:05 浏览:838
社保的卡银行密码是多少 发布:2025-03-26 01:00:28 浏览:975
买手机如何看是正品安卓 发布:2025-03-26 00:28:25 浏览:363
对象没有存储类型 发布:2025-03-26 00:10:03 浏览:402