前端小白的 docker 配置nginx踩坑之旅

942 阅读2分钟
//查看系统版本
lsb_release -a

//输出
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.5.1804 (Core)
Release:	7.5.1804
Codename:	Core

##docker 安装及pull镜像不表(具体参考官方文档)

https://docs.docker.com/install/linux/docker-ce/centos/

不熟悉nginx 如何快速配置。强烈建议先看文档 
https://hub.docker.com/_/nginx/

坑在这(捂脸)

原因:docker 安装gitlab 导致 服务器ssl被变更 然后服务器死循环 无法登录 没有排查出问题所在 卒 重装

经过:

1.没看清楚文档就开始玩 虽然对nginx如何运行很清楚 但对配置了解的并不是特别清晰 直接映射目录到docker内部 执行。不报错(捂脸 此时一脸懵逼 不显示我的自定义页面)

2.定位问题 修改配置。文件映射内部地址 和 宿主机地址 不匹配 找找官方文档

https://hub.docker.com/_/nginx/

提取出以下目录

-v /host/path/nginx.conf:/etc/nginx/nginx.conf


/etc/nginx/nginx.conf
/etc/nginx/conf.d/mysite.template
/usr/share/nginx/html

此时找到坑了 文件映射目录不对

3.修改配置 重新运行容器

docker 容器创建了 但不执行 啥问题???

联想到可能是nginx.conf 映射文件不对 对比nginx.conf文件 发现 确实两个文件内配置存在误差

两个配置就不上了 写了 发现对于阅读文章体验不好 就删了~

配置区别在这

#upload max file
client_max_body_size 11M;
client_body_buffer_size 128k;
 
#此处不明白为何会产生无法访问的问题

结果: 最后不映射nginx.conf 解决战斗~

开启443端口和80端口

//输出目录地址
pwd 
 /root/nginx
 
 //整个结构如下
├── conf //配置文件
│   ├── default.conf
│   └── default.conf.bak
├── html. //默认显示目录
│   └── index.html
├── logs //日志目录
│   ├── access.log
│   └── error.log
├── nginx.conf  //祝配置文件
├── ssh
│   ├── certificate.crt //下载pem nginx 证书
│   └── certificate.key //下载pem nginx 证书


docker run --detach \
        --name nginxserver \
        -p 443:443\
        -p 80:80 \
        -v /root/nginx/html:/usr/share/nginx/html:rw\
        -v /root/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf:rw\
        -v /root/nginx/ssh:/ssl/:rw\
        -d nginx
        

--name docker容器名
  
-p 映射端口

#文件目录映射  html下的自定义文件
-v /root/nginx/html:/usr/share/nginx/html:rw\

   

#自定义配置文件default.conf
-v /root/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf:rw\
  

#服务器ssl文件
-v  -v /root/nginx/ssh:/ssl/:rw\
  

-d 后台(background)运行  


#访问容器内部
sudo docker exec -it ID /bin/bash  

 #/bin/bash 不一定是这个命令 具体用docker ps可以看到      

以上是我的成功配置。

最后上图

Docker容器nginx文件映射关

文章写的不对,或者不清晰的地方,烦请指正!谢谢!