在Docker下部署Nginx

在Docker下部署Nginx,包括:

  • 部署一个最简单的Nginx,可以通过80端口访问默认的网站
  • 设置记录访问和错误日志的路径
  • 设置静态网站的路径
  • 通过proxy_pass将HTTP请求反向代理到nodejs Web App
  • 设置HTTPS

如果你还没有安装Docker环境,可参考在Docker中运行Node.js的Web应用

最简单的命令,让Nginx跑起来

命令如下:

1
$ sudo docker run -it -p 80:80 dockerfile/nginx

如果是第一次,下载nginx镜像需要点时间。

然后,可以通过浏览器根据地址访问到一个默认的网页,说明Nginx成功跑起来了。

设置记录访问和错误日志

Nginx有2个日志:

  1. access.log,记录每个HTTP请求信息
  2. error.log,记录Nginx运行中的错误,用于排错

运行如下命令:

1
$ sudo docker run -it -p 80:80  -v `pwd`/logs:/var/log/nginx dockerfile/nginx

这个命令会在当前目录下创建logs目录,存放access.log和error.log。

设置静态网站路径

需要创建目录:

  • config,目录下放一个文件,名为server,Nginx静态网站配置文件
  • www,目录下放html文件,比如index.html

server文件:

1
2
3
4
5
6
7
8
server {
listen 80; root /www;
index index.html index.htm; server_name localhost;
}

命令如下:

1
sudo docker run -it -p 80:80 -v `pwd`/www:/www -v `pwd`/config:/etc/nginx/sites-enabled  -v `pwd`/logs:/var/log/nginx dockerfile/nginx

解释一下:

  • -vpwd/www:/www,将当前路径下的www目录设置为/www,和server配置的路径对应
  • -vpwd/config:/etc/nginx/sites-enabledserver文件的本地路径,映射到docker容器的nginx配置路径

设置反向代理到Nodejs Web App

需要先能将Nodejs的容器跑起来,然后再考虑怎样通过Nginx的反向代理。

可参见在Docker中运行Node.js的Web应用

假设我有个express.js项目,在当前目录下的webapp目录中,使用docker命令类似这样:

1
sudo docker run -d -p 3000:3000 --name ProtoWebApp -v `pwd`/webapp:/webapp -w /webapp  node npm start

然后,将前面例子中config目录下的server文件做点改动:

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80; #root /www;
#index index.html index.htm; server_name localhost; location / {
proxy_pass http://localhost:3000;
}
}

之后,用下面的命令将nginx跑起来:

1
sudo docker run -it -p 80:80 --link ProtoWebApp:localhost -v `pwd`/config:/etc/nginx/sites-enabled  -v `pwd`/logs:/var/log/nginx dockerfile/nginx

设置HTTPS

只需在运行nginx容器的时候设置SSL的路径:-v <certs-dir>:/etc/nginx/certs

当然,nginx首先要设置,参见配置HTTPS服务器

在Docker下部署Nginx的更多相关文章

  1. 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群

    庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介      前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...

  2. 设想 Docker 下部署 KVM

    设想 Docker 下部署 KVM 一.安装 $ yum -y install kvm # kvm base , must $ yum -y install libvirt -y # libvirtd ...

  3. debian7下部署nginx服务器

    笔者是在vmware中的Debian7下部署nginx服务器,采用离线部署方式.过程如下: 1.准备好需要的离线安装包 nginx-1.6.2.tar.gz,pcre-8.34.tar.gz,open ...

  4. Docker Compose部署 nginx代理Tomcat集群

    一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...

  5. 阿里云服务器安装Docker并部署nginx、jdk、redis、mysql

    阿里云服务器安装Docker并部署nginx.jdk.redis.mysql 一.安装Docker 1.安装Docker的依赖库 yum install -y yum-utils device-map ...

  6. docker stack 部署nginx

    =============================================== 2018/7/29_第1次修改                       ccb_warlock == ...

  7. docker - compose 部署 Nginx

    主要介绍 docker 中 Nginx 的部署及项目目录挂载券的方法.docker 中部署一个服务,有三种方法,分别是 docker run.Dockerfile.docker-compose . 下 ...

  8. 利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_165 上一篇文章:Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像,是在 ...

  9. Linux运维之docker虚拟化部署nginx

    一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...

随机推荐

  1. 部分 CM11 系统 Android 平板执行植物大战僵尸 2 黑屏的解决的方法

    原文 http://forum.xda-developers.com/showthread.php?t=2755197 部分 CM11 系统的 Android 平板(比如三星 GT-P5110 )执行 ...

  2. poj 2081 Recaman&#39;s Sequence

    開始还以为暴力做不出来,须要找规律,找了半天找不出来.原来直接暴力.. 代码例如以下: #include<stdio.h> int a[1000050]; int b[100000000] ...

  3. js读取本地磁盘文本文件并保存为JSON数据(有格式的文本)

    主要的代码是红色区域,HTML5获取本地文件对象并进行操作 //给上传按钮添加点击事件 $(".myappTXTUploadBtn").click(function(){ var ...

  4. 【PHP分享】Windows tail工具分享

    作者:zhanhailiang 日期:2014-09-28 在Linux下能够使用tail -f工具实时查看输出的日志.近期切换到本地Windows开发环境,顿时有点不爽.百度了下,最终找到tail的 ...

  5. mybatis04 根据用户名称模糊查询用户信息

    根据用户名称模糊查询用户信息可能返回多条记录. 1.1.1User.xml 编码 如果用%进行模糊查询,#{}表示一个占位符会被翻译为一个?号(SELECT * FROM USER WHERE id= ...

  6. 重新格式化namenode后,出现java.io.IOException Incompatible clusterIDs

    错误: java.io.IOException: Incompatible clusterIDs in /data/dfs/data: namenode clusterID = CID-d1448b9 ...

  7. OC学习笔记[注意事项]

    alloc  new  retain之后都必须要调用release方法 计数器要变只有这几种方法 retain release alloc new copy方法才会使计数器改变,谁想用人家对象,就对他 ...

  8. XC一键锁屏应用

    XC一键锁屏,一键Android锁屏应用,彻底解放开关机键~ 下载地址: http://download.csdn.net/detail/jczmdeveloper/7329447

  9. iOS开发中.pch 文件的使用及其相关工程设置

    .pch文件 也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问.是一个预编译文件. 首先说一下pch的作用: 1.存放一些全局的宏(整个项目中都用得上的宏) 2.用来包含一些全部 ...

  10. C# 重写思想

    问题一:什么是重写?     “重写”父类方法就是修改它的实现方式或者说在子类中对它进行重新编写. 问题二:为什么要重写父类的方法      通常,子类继承父类的方法,在调用对象继承方法的时候,调用和 ...