1. 下载nginx镜像
去docker的官方镜像仓库中心(https://hub.docker.com/)去获取目标镜像的下载命令。本文已nginx:stable-perl为例,使用docker pull nginx:stable-perl拉取镜像。
2.挂载准备
根据需要准备好挂载的文件夹:mkdir www logs conf,分别存放静态资源文件、日志、配置。除此之外还需要准备配置文件,如果没有现成模版,可以先运行一个容器,进入容器将默认的配置文件复制出来。操作如下:
运行容器:docker run -d -p 80:80 --name nginx nginx:stable-perl
复制配置文件:docker cp [容器id]:/etc/nginx/nginx.conf /chiangtaol/nginx/conf(目标目录)
修改配置文件,博客配置的server部分如下,http重定向到https。如果不需要https,将location部分替换listen 80 下面的重定向的代码即可。仅供参考:
server { listen 80; charset utf-8; server_name blog.tntao.cn; return 301 https://blog.tntao.cn$request_uri; } server { listen 443 ssl; charset utf-8; server_name blog.tntao.cn; # 这里的路径写容器内的路径 ssl_certificate /etc/nginx/conf.d/cert/blog.tntao.cn_bundle.crt; ssl_certificate_key /etc/nginx/conf.d/cert/blog.tntao.cn.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { # 将地址修改为你的真实使用地址和端口 proxy_pass http://140.xxx.xxx.xxx:8090; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #nginx跟后端服务器连接超时时间(代理连接超时) proxy_connect_timeout 300; #后端服务器数据回传时间(代理发送超时) proxy_send_timeout 300; #连接成功后,后端服务器响应时间(代理接收超时) proxy_read_timeout 300; } }
3. 运行容器
docker run -d -p 80:80 -p 443:443 --name nginx -v /chiangtaol/nginx/www:/usr/share/nginx/html -v /chiangtaol/nginx/conf/conf.d/:/etc/nginx/conf.d -v/chiangtaol/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /chiangtaol/nginx/logs:/var/log/nginx nginx:stable-perl
有些时候需要使用https,所有需要映射一个443的端口。
4. 修改时区
docker cp /usr/share/zoneinfo/Asia/Shanghai [容器id或名称]:/etc/localtime。
修改成功后可以使用:docker exec -it nginx /bin/bash进入容器,使用date命令查看修改结果
[root@VM-0-10-centos logs]# docker exec -it nginx /bin/bash
root@81ab9d9b2ef8:/# date