From 71c26b014bedafbd83e53d5743a062448d4b55b3 Mon Sep 17 00:00:00 2001 From: Endial Fang Date: Wed, 6 Jan 2021 13:54:21 +0800 Subject: [PATCH] =?UTF-8?q?[fix:1.16]=E6=9B=B4=E6=96=B0readme=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 189 ++++++++++++++++++++++++++++----------------- img/logo-nginx.png | Bin 0 -> 2103 bytes 2 files changed, 120 insertions(+), 69 deletions(-) create mode 100644 img/logo-nginx.png diff --git a/README.md b/README.md index a8ef5ca..f3e4f81 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # Nginx -基于的 Ubuntu(18.04) 系统的 Nginx 镜像,用于提供 WEB(nginx) 服务。 +针对 [Nginx](http://nginx.org) 应用的 Docker 镜像,用于提供 Nginx 服务。容器详细使用说明可参考仓库:[Gitee](https://www.gitee.com/endial/studylife.git) 或 [Github](https://www.github.com/endial/studylife.git)中`服务器运维`相应文档。 +使用说明可参照:[官方说明](http://nginx.org/en/docs/) +![logo-nginx](img/logo-nginx.png) **版本信息:** @@ -10,109 +12,158 @@ **镜像信息:** -* 镜像地址:colovu/nginx:latest - * 依赖镜像:colovu/ubuntu:latest +* 镜像地址: + - 国内镜像仓库:registry.cn-shenzhen.aliyuncs.com/colovu/nginx + - DockerHub:colovu/nginx -## 数据卷 +## TL;DR -镜像默认提供以下数据卷定义: +Docker 快速启动命令: ```shell - /srv/www # 站点源文件 - /srv/conf # nginx 配置文件,配置文件存放在 nginx 子目录中 - /var/log # 日志文件,nginx 日志存放在子目录 nginx 中 - /var/run # 进程运行PID文件 +# 从 Docker Hub 服务器下载镜像并启动 +$ docker run -d -p 80:8080 colovu/nginx:1.16.1 + +# 从 Aliyun 服务器下载镜像并启动 +$ docker run -d -p 80:8080 registry.cn-shenzhen.aliyuncs.com/colovu/nginx:1.16.1 ``` -如果需要持久化存储相应数据,需要在宿主机建立本地目录,并在使用镜像初始化容器时进行映射。 - -举例: - -- 使用宿主机`/opt/conf`存储配置文件 -- 使用宿主机`/srv/data`存储数据文件 -- 使用宿主机`/srv/log`存储日志文件 - -创建以上相应的宿主机目录后,容器启动命令中对应的映射参数类似如下: - -```dockerfile --v /host/dir/to/conf:/srv/conf -v /host/dir/to/data:/srv/data -v /host/dir/to/log:/var/log -``` - -> 注意:应用需要使用的子目录会自动创建。 +- 后续相关命令行默认使用 Docker Hub 镜像服务器做说明 -## 使用说明 - - - -### 运行容器 - -生成并运行一个新的容器: - -```bash -docker run -d --name nginx \ - -p 80:8080 \ - -v /host/dir/to/www:/srv/www:ro \ - -v /host/dir/to/log:/var/log \ - -v /host/dir/to/conf:/srv/conf \ - colovu/nginx:latest -``` - -使用宿主机用户(如`www-data`用户)生成新的容器: +Docker-Compose 快速启动命令: ```shell -docker run -d --name nginx \ - --user www-data \ - -p 80:8080 \ - -v /host/dir/to/www:/srv/www:ro \ - -v /host/dir/to/log:/var/log \ - -v /host/dir/to/conf:/srv/conf \ - colovu/nginx:latest -``` +# 从 Gitee 下载 Compose 文件 +$ curl -sSL -o https://gitee.com/colovu/docker-nginx/raw/master/docker-compose.yml -> 注意:如果使用自定义用户创建容器,且需要使用数据卷,可以有两种方式确保权限正确: -> -> - 指定数据卷目录中不存在nginx子目录,由容器创建对应nginx目录及配置文件,然后个性化修改 -> - 指定数据卷目录中存在nginx子目录,需要确保子目录及目录中文件属于启动容器时所指定的用户组 +# 从 Github 下载 Compose 文件 +$ curl -sSL -o https://raw.githubusercontent.com/colovu/docker-nginx/master/docker-compose.yml -如果存在`dvc`数据容器,可以使用以下命令: - -```bash -docker run -d --name nginx \ - -p 80:8080 \ - --volumes-from dvc \ - colovu/nginx:latest +# 创建并启动容器 +$ docker-compose up -d ``` -### 进入容器 +--- -使用容器ID或启动时的命名(本例中命名为`php-fpm`)进入容器: + + +## 默认对外声明 + +### 端口 + +- 8080:HTTP 端口 +- 8443:HTTPS 端口 + +### 数据卷 + +镜像默认提供以下数据卷定义,默认数据分别存储在自动生成的应用名对应`nginx`子目录中: ```shell -docker exec -it nginx /bin/bash + /srv/data # 站点源文件 + /srv/conf # nginx 配置文件 + /var/log # 日志文件 + /var/run # 进程运行PID文件 ``` +如果需要持久化存储相应数据,需要**在宿主机建立本地目录**,并在使用镜像初始化容器时进行映射。宿主机相关的目录中如果不存在对应应用`nginx`的子目录或相应数据文件,则容器会在初始化时创建相应目录及文件。 -### 停止容器 -使用容器ID或启动时的命名(本例中命名为`php-fpm`)停止: +## 容器配置 + +在初始化 `Nginx` 容器时,如果没有预置配置文件,可以在命令行中设置相应环境变量对默认参数进行修改。类似命令如下(配置环境变量`APP_ENV_KEY_NAME`的值为`key_value`): ```shell -docker stop nginx +$ docker run -d -e "APP_ENV_KEY_NAME=key_value" colovu/nginx ``` +### 自动变量替换 + +针对配置文件中的配置项,支持环境变量名自动替换,该类环境变量定义规则为:`APP_CFG_*=` + +- `APP_CFG_`:环境变量自动替换标识,具备该前缀的环境变量会被自动处理并更新至配置文件 +- `*`:配置文件中对应的配置项名,大小写需要符合实际参数名要求;特殊字符需要符合`特殊字符替换规则` +- ``:配置项对应值 + +例如: + +```shell +# 设置配置文件中配置项 max_wal_size,传入容器的变量为(两者都可以): +APP_CFG_max_wal_size=400MB +APP_CFG_max_wal_size="400MB" + +# 容器启动后,应用配置文件中对应配置项生效,且设置为相应值: +max_wal_size = '400MB' +``` + +**特殊字符替换规则**: + +- 针对使用`xml`格式的配置文件 + + `_` ==> `.` : 环境变量中的`下划线`会被转义为设置属性中的`半角点` + + `__` ==> `_` : 环境变量中的`双下划线`会被转义为设置属性中的`单下划线` + + `___` ==> `-` : 环境变量中的`三下划线`会被转义为设置属性中的`中划线` +- 针对使用`key-val`格式的配置文件 + + `_` ==> `_` : 环境变量中的`下划线`不会被替换 + + `__` ==> `.` : 环境变量中的`双下划线`会被转义为设置属性中的`半角点` + + `___` ==> `-` : 环境变量中的`三下划线`会被转义为设置属性中的`中划线` + + +### 常规配置参数 + +常规配置参数用来配置容器基本属性,一般情况下需要设置,主要包括: + +- + +### 常规可选参数 + +如果没有必要,可选配置参数可以不用定义,直接使用对应的默认值,主要包括: + +- `ENV_DEBUG`:默认值:**false**。设置是否输出容器调试信息。可选值:1、true、yes + +### 集群配置参数 + +配置服务为集群工作模式时,通过以下参数进行配置: + +- + +### TLS配置参数 + +配置服务使用 TLS 加密时,通过以下参数进行配置: + +- + + + +## 安全 + +### 容器安全 + +本容器默认使用应用对应的运行时用户及用户组运行应用,以加强容器的安全性。在使用非`root`用户运行容器时,相关的资源访问会受限;应用仅能操作镜像创建时指定的路径及数据。使用`Non-root`方式的容器,更适合在生产环境中使用。 + +如果需要赋予容器内应用访问外部设备的权限,可以使用以下两种方式: + +- 启动参数增加`--privileged=true`选项 +- 针对特定权限需要使用`--cap-add`单独增加特定赋权,如:ALL、NET_ADMIN、NET_RAW + + + ## 注意事项 -- 容器中启动参数不能配置为后台运行,只能使用前台运行方式,即:`daemonize no` -- 如果应用使用后台方式运行,则容器的启动命令会在运行后自动退出,从而导致容器退出 +- 容器中应用的启动参数不能配置为后台运行,如果应用使用后台方式运行,则容器的启动命令会在运行后自动退出,从而导致容器退出 + + + +## 更新记录 + +- 2021/1/1 (1.0): 初始版本 diff --git a/img/logo-nginx.png b/img/logo-nginx.png new file mode 100644 index 0000000000000000000000000000000000000000..51bba47f98b5d5d76d4f9a36408c782b26973966 GIT binary patch literal 2103 zcmb_e`9IVP8~vK^SZASxk@ZSs8O9*WxRy+cMp<4at}zlN8nl=p!&q7@naC0bg+jJT ziSSNCSteVyYe_Y(8-+W@c8z$s?*H(9KF{Yl=cjX?=lpb%&$&1vWDd#z0Dw4s%E1i) z#K?R6loYtPcP+kV?19I*GamRo1oHmR(-zeeyC!s!QYYuV zMf=C$jY}$!D0s%5kJMn(3GEhhuav6l`isFvuY8MT63fS!y!2JyL7(RZj#k!Ycyo`A z%k|F}c%Po?WkyHtDCJn-vHhRtFASv>_Z{Q4C~h}84SOoUsubj2Y>!@}msV_6m1#%J zlUAvx%eyP%NDXR7bVhMZgW}z5GdHQ3&*Wo|Qh0wF);_5bY#R=~(*IU`{Kbj3s?dcg zTu$8c1IZy>qY-ffX3I@s(_#5pvC+ck3EGuuU+X97MAGN1k+IEZU`zIz%yz42!sF1pi_8SX zlsK#otCgZ$*c7A*kMYx2ZpmYjmmK>KRLnF<$dpBWwjan6V`eVq_hysyf(+B>QApfd zPx*dfGkp6Ghw1Bnv_d-CaggaJqcjc!{qu~OBkV@Jn)q)Kp%0}jCuFB|7ONtEg=nVH zCnUT?^O}6tOiMAW`pVxyo{W5Jg8uKhy7j6RRuWBoQRYG=*8({*WT0Zey2Yf)NjftD zb=ujEJg)4ZdaM7QH=#w0^{N=G%Ak%GO5)g3#QU!8QSBUc2i01Ejf8;a_skmBL;!>f zp{Gz=K`BzkbJxhN_yWq#{*9r2F+s@kBT{{%eKI|S@QFL+AU1=ZG>oGZTxaOs;S!00 zRK}ZaDNES_Ct4$`SZoRd&4C5@!9!QhGIE8!$zJcg)nsuPAYGx81D*3chH1uqdgwzV z1S2IW@=#TSGnh^ui&*!oj*@&M@n zeF37RW_5Fm(U8o7`@9S5y9=?XT>=>Kn7?nvS6(Q;p%gCO<%i48(f|UEJe&hi(gA)- zL^L@_5i&Pzp|?V~QX&iX-=BM0DD}umUQU7&OCD0}?ZxsB|6DI$8X0!wMz1ZpC2`F} zw@nupAX_#I_8pMif{l`x;^?o^X-ZA@{$wvyZZL%FQIe+&8f-A*O4ioVgu0P+F93xO z&j&DyogAa^%a2mgM`R_XESwpde^9f>s`Z#gO<;5Uwpsq(%Nu zVxBTEu-$UoRu^(B_pdtuX74ay+@|4@6P#6Q5pW5d5l8Ml|7U9ak9L=rD9aO$MKHKh zldHT$q%&eI8*~p3>f|1dL2MhxFLBnPz#;#|)Ofn-swTwKlilU+P11Nncn4Dj?zE39 zfu(s9;>fFm)g_IS6s%!gnyMKeBDojfN(XoP$F)Th;pk)Z4W6sQD-9yLNE``v!Hli( zkav0Kk?9DTaolVz*k17p2X;ji8FZN{S# zE^;X~5#iC5t%_X|P@ID04UVJpRr0qX)<#)^G&SA6c=q=I-CcsAZzMRGCEwZUC&= zcOU;mN1P38tanwPysTN4VDZISi+{2%qBcFZZh!L&Wk7%~74U2|pkQZWsR@4uI&OK+ zQ(T$|F|`lJ)8*7L>4edULr@eu&5%4if0s-VHZC)kJ1dbI36;ruGHGRLD>>2K6_aqb zJRqttF@leeXp<`&WU>JDGmkvkA{u?kZiS*$Fh~(SUO0?cJ@r8X=_l*~fSM=%b^tid1Bi7>;K|9XfhCd$g)fT5= ztXPi_L>N;4m$qh1`jtWj8ocU@3Mz`m)+LO49in3iS?-0I(@^w uAH%)B_rHq;ywC8iLsJE_3O@@uv(vKg`KqG(qJ|6qHh|N37l&GVa>73%N4(|$ literal 0 HcmV?d00001