Docker上部署Nginx

网上关于Docker上部署Nginx的资料已经很多了,基本上都是采用直接拉取官方镜像的方式实现的,由于我司针对CentOS 6上开发了一套一键部署程序,这里我会采用Dockerfile的方式进行部署,复用一键安装包里编译好的软件。

开发Dockerfile前的准备

1、检查Docker服务是否启动,如未启动请先启动服务

1
2
3
4
# 检查服务
systemctl status docker
# 启动服务
systemctl start docker

注: 如果系统没安装Docker,请参考官方文档进行安装,我采用的系统环境为CentOS 7
2、查看本地镜像

1
docker images

3、由于我是基于我司的软件包上进行部署,所以需要拉取对应的系统镜像

1
docker pull centos:6

注: 如果你本地有该镜像可以省略该步骤

制作镜像

编写Dockerfile文件并生成镜像

1
2
3
4
5
6
7
8
9
10
FROM centos:6

MAINTAINER zhangpeng <zhangpeng@redbirdedu.com>

ADD nginx-1.13.0.tar.gz /opt
VOLUME /opt/nginx-1.13.0/conf/vhosts
ENV PATH /opt/nginx-1.13.0/sbin:$PATH
CMD nginx -g "daemon off;"

EXPOSE 80

生成镜像

1
docker build -t zhangpeng/nginx:1.13.0 .

nginx-1.13.0里面的nginx.conf文件如下

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
32
33
34
35
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

server_tokens off;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/javascript text/javascript;
gzip_vary on;

include /opt/nginx-1.13.0/conf/vhosts/*;
}

启动容器

从nginx.conf配置文件中我们可以发现,我们自定义的配置文件需要放在/opt/nginx-1.13.0/conf/vhosts/下,所以在根据镜像启动容器的时候需要将存放本地自定义配置的目录和其进行挂载。

1
2
3
4
5
6
docker run \
-d \
-p 8080:80 \
-v /root/nginx/conf:/opt/nginx-1.13.0/conf/vhosts \
-v /root/nginx/html:/opt/nginx-1.13.0/html \
zhangpeng/nginx:1.13.0

注: 有些系统由于SELinux的问题挂载的目录是没有权限的,解决方式要么关闭SELinux要么在上面的命令上加上如下参数即可:–privileged=true
检查容器是否正常运行

1
docker ps -a

如果我们的容器状态是UP则表示容器运行正常,接着访问本地8080端口检查有没有出现根据/root/nginx/conf/*.conf配置文件配置的服务,如果无法访问则需要检查本地目录配置文件的正确性,如本地配置文件读取的目录是否挂载正确。

  • 本文作者: Harmel
  • 本文链接: http://www.harmel.cn/2019/02/docker-nginx.html
  • 版权声明: 文章如无特别说明,则表明该文章为原创文章,如需要转载,请注明出处。
  • 本站说明: 本站使用阿里云服务器,如果您喜欢我的网站,欢迎收藏,能捐赠支持一下就再好不过了。