docker下安装Nginx

一、 环境说明

  • docker: 18.03.1-ce
  • nginx: 1.15.1

二、 拉取最新的 Nginx 镜像

  • 拉取镜像
$ docker pull nginx
  • 查看当前镜像
$ docker images
# 查询结果:
REPOSITORY    TAG     IMAGE ID      CREATED      SIZE
nginx       latest   8b89e48b5f15  7 hours ago   109MB

三、 准备工作

本次将web服务部署在 /srv/web 目录下:

3.1 创建 /srv/web 目录 并进入该目录

$ cd /srv && mkdir web && cd web

3.2 随便创建一个 Nginx 容器,并拷贝 Nginx 的默认配置:

  • 创建容器:
$ docker run -d --name nginx nginx
  • 从容器中拷贝配置文件至本地:
# 查看 ==> 获取容器ID
$ docker container ls
# 在当前目录下创建目录:conf 
$ mkdir conf
# 拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录
$ docker cp a89b2c5f3dd1:/etc/nginx/nginx.conf $PWD/conf
  • 删除容器:
# 停止容器
$ docker container stop a89b2c5f3dd1
# 删除容器
$ docker container rm a89b2c5f3dd1

四、 开始正式部署

  • 部署命令:
$ docker run -d -p 80:80 -p 443:443 --name nginx -v $PWD/html:/usr/share/nginx/html -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/var/log/nginx nginx
  • 命令详细说明:
-d # 表示在一直在后台运行容器
-p 80:80 # 对端口进行映射,将主机80端口映射到容器内部的80端口(前面的是主机的80,后面的是容器的80)
-p 443:443 #主机443端口映射到容器的443端口(为了支持ssl)
--name # 设置创建的容器名称
-v # 将本地目录(文件)挂载到容器指定目录;

五、 测试

5.1 测试

​ 如果是本地测试部署则打开:localhost:80 即可访问到 web 服务器;

5.2 补充:

​ 因为是将容器内的 nginx 的根目录给挂载到本地指定目录,所以上面访问到的页面应该会报 403 错误;接下来可以在 /srv/web/html/ 开始我们的项目;

5.3 进入本地目录:/srv/web/html/ 创建测试文件 index.html

$ cd /srv/web/html
# 创建并随便编写内容 重新刷新页面
$ vim index.html

六、支持ssl协议

参照文章https://blog.csdn.net/keketrtr/article/details/80439910,申请免费的ssl证书。

 最终获得certificate.crt和private.key。因为需要在nginx.conf里面配置ssl证书路径,这个路径必须是容器能够识别的路径。简单起见,我直接把这两个文件放到/srv/web/html/cert目录下了。因为主机的/srv/web/html目录映射到了容器的/usr/share/nginx/html目录。所以在nginx.config里面配置密钥路径的时候要配成如下:

ssl_certificate      /usr/share/nginx/html/cert/certificate.crt;

ssl_certificate_key  /usr/share/nginx/html/cert/private.key;

完整的nginx.conf如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值