在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. Linux kernel驱动相关抽象概念及其实现 之“bus,device,driver”

    bus,device,driver三个很重要的概念贯穿Linux内核驱动架构,特转载一篇博文: (转载自http://blog.csdn.net/gdt_a20/article/details/642 ...

  2. Java基础知识强化之IO流笔记22:FileInputStream / FileOutputStream 复制文本文件案例1

    1. 使用字节流FileInputStream / FileOutputStream 复制文本文件案例: 分析: (1)数据源:从哪里来 a.txt   --   读取数据  --  FileInpu ...

  3. FreeBSD更换默认csh为bash

    1.安装bash cd /usr/ports/shells/bash make install 2.切换chsh(change shell) chsh -s /usr/local/bin/bash

  4. python 函数初识和文件操作

    文件操作  打开文件:文件句柄 = open('文件路径', '模式')  打开文件的模式 w #以写的方式打开 (不可读,不存在则创建,存在则删除内容) a #以追加的模式打开(可读, 不存在则创建 ...

  5. php 5.3起弃用session_register

    最近下了dedecms V5.7时,在登陆后台时,用户名和密码也没错,就是跳转不走,进不了后台管理页面,追踪了好久才发现根目录/include/userlogin.class.php中289行左右的位 ...

  6. 【Oracle】INSERT INTO SELECT语句和SELECT INTO FROM语句的区别

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

  7. 用Module元素实现SharePoint Webpart Page的自动生成

    最近研发的项目中开发了很多的WebPart,每次部署这些WebPart到新环境中总是很麻烦,因为自己要新创建WebpartPage,同时还要把这些WebPart放到指定的WebPart页中去: 为了方 ...

  8. css动画结束后 js无法修改translated值 .

    由于项目的需要,俺要做一些页面的转场动画. 即将是移动端,肯定是首先css动画了. 结果确发现,css动画中,如果设置animation-fill-mode: both;在动画结束后无法个性trans ...

  9. SQL_server 的基本操作

    1.---------------数据库基本操作 主键 : 1.不重复 2.不为NULL外键 1.取消重复行(消除完全一样的行,保留一行)select distinct cloumname1,clou ...

  10. 基于.net 职责链来实现 插件模式

    插件式的例子 QQ电脑管家,有很多工具列表,点一下工具下载后就可以开始使用了 eclipse ,X Server 等等 插件式的好处 插件降低框架的复杂性,把扩展功能从框架中剥离出来 让第三方有机会来 ...