docker中使用nginx

1.拉取镜像

拉取测试

浏览器测试

参考

# 安装
https://www.cnblogs.com/zhaokejin/p/15605261.html

2.修改配置

我们再开启一个终端,进入到nginx容器中

但我们发现vim、vi、等一系列指令都not find,因为docker给我们下载的nginx并未携带linux的命令的源文件

# 但我们还是有三种办法可以实现修改配置文件的,难度依次提高

配置文件在容器与服务器之间来回cp

下载vim命令

# # 干脆在容器中下载vim命令,下载过程可能出错,因为网不好,多下载几次即可。
apt-get update
apt-get install vim

https://www.cnblogs.com/dotnet261010/p/12594154.html
https://blog.csdn.net/weixin_45503064/article/details/124091211
# 网速比较慢,很可能会超时,但可以多次下载,最终会成功!

数据卷

# 使用数据卷挂载
https://blog.csdn.net/wanglui1990/article/details/102082249
https://www.cnblogs.com/SecondSun/p/12855865.html

3.代理.netcore

# 现在我们已经可以自由修改配置文件了,接下来就是代理.net core项目

测试

我们启动一个mvc项目测试,记住对外端口是8001

先查看mvc项目的网络连接会看到docker网关和得到ip地址

开始修改nginx自带的default.conf文件,由于我的mvc项目启用了https,所以必须写成https,然后是docker网关,最后是对外端口,为什么是这样将单独写博客说明,依旧遵循不跑题原则哈哈哈
博客:https://www.cnblogs.com/long-live/p/ngp.html

最后我们重启nginx,让配置文件立即生效

浏览器访问nginx的端口

参考

感谢以下博主让我从爬出深坑~

# 配置文件为分配的ip地址
https://www.cnblogs.com/dotnet261010/p/12596185.html

# 配置文件为docker网关
https://blog.csdn.net/qq_27843785/article/details/101784607

4.启用https

步骤

启动nginx容器并挂载ssl文件:

进入nginx容器查看文件列表:

将ssl文件拷贝到本服务器中:

可以看到容器内该文件夹也有这些文件:

将默认的default.conf拷贝一份:

将default.conf的监听80端口修改掉,防止冲突:

在拷贝文件中添加证书和代理:

至于为什么是172.17.0.1而不是172.17.0.2是因为现在是通过docker0是注册模式,必须先通过docker的ip做桥梁,普通的容器能互ping是因为属于广播模式:

重启nginx容器,更新修改的配置:

浏览器访问:

参考

感谢以下博主让我从爬出深坑~

# docker搭建https(安全证书)的8种方式
https://www.bilibili.com/video/BV1H34y1X7wp?p=2&vd_source=6222e02dd83374fd4d8850e5384b16f6

# Docker&k8s
https://www.bilibili.com/video/BV1Sv4y1174r/?spm_id_from=333.337.search-card.all.click&vd_source=6222e02dd83374fd4d8850e5384b16f6

5.添加域名

阿里云解析域名

修改配置

重启nginx浏览器查看

6.错误集合

进入容器为什么要/bash

# 为什么进入nginx需要两个,是不是不用-d使用-it交互模型就可以不用呢?

容器run时添加bash坑

https://www.bilibili.com/video/BV1oY4y1L7Rz/?spm_id_from=333.788.top_right_bar_window_custom_collection.content.click
https://www.bilibili.com/video/BV1oY4y1L7Rz/?spm_id_from=333.337.search-card.all.click&vd_source=6222e02dd83374fd4d8850e5384b16f6

重启服务的坑

https://www.bilibili.com/video/BV1SE411x7hw?p=7&vd_source=6222e02dd83374fd4d8850e5384b16f6

反向代理出现502 Bad Gateway

https://blog.csdn.net/zgahxxwht/article/details/105576126

配置文件出错导致无法启动容器

通过docker logs 容器Id, 日志报错提示配置文件有误或者错误信息。因为修改了docker容器中的配置信息,由于配置文件写错,或者配置文件格式错误等原因,导致容器无法再次启动.
这时候通过命令: docker exec -it es /bin/bash 已经无法进入容器了, 问题是容器无法启动, 但容器配置文件又在容器里面, 我们该怎么办呢 ?

方法一:
把docker容器中的配置文件复制到主机中,然后在主机中修改,修改完成后再复制到docker容器中,这里需要使用的docker的命令:
docker cp [容器id]:docker容器中配置文件路径  主机路径

例如:
docker cp mysql:/etc/mysql/my.cnf /home/my.cnf
这样就能把容器中的文件拿到本地来,然后进行修改之后呢,再通过该命名上传到容器中去。

例如:
docker cp 主机文件路径 容器id:docker容器中配置文件路径
docker cp /home/my.cnf mysql:/etc/mysql/my.cnf

之后我们重启容器就可以了。

启动容器时报empty

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty

不用在意,依然可以正常启动访问

7.拓展

nginx日志

# 1.可以通过容器日志查看
docker logs 231a8024f61a

# 2.从nginx配置文件获取日志位置

修改nginx首页

https://www.bilibili.com/video/BV1uE411Y7aN/?spm_id_from=333.337.search-card.all.click&vd_source=6222e02dd83374fd4d8850e5384b16f6
posted @ 2023-01-26 22:33  long-livece  阅读(1330)  评论(0编辑  收藏  举报