内容简介:之前介绍 docker 的时候说过它的优势之一,就是可以在同一服务器中搭建多个环境,互相隔离。昨天就实际操作下,万万没想到如此多的坑,比之前从零开始搭建服务器都费时间。变换了好几种方案,最终还是解决了,中间的心酸就忽略吧,直接说操作方法。服务器中已存在的是 laradock 镜像,可以运行 laravel 环境以及其他的 PHP,包含了 nginx、mysql、redis 等。我的想法是再添加一个 nginx 容器,用来做反向代理。根据子域名进行分发,可以分发给 laradock,也可以给其他任何容器(包括
导语
之前介绍 docker 的时候说过它的优势之一,就是可以在同一服务器中搭建多个环境,互相隔离。昨天就实际操作下,万万没想到如此多的坑,比之前从零开始搭建服务器都费时间。变换了好几种方案,最终还是解决了,中间的心酸就忽略吧,直接说操作方法。
架构
服务器中已存在的是 laradock 镜像,可以运行 laravel 环境以及其他的 PHP,包含了 nginx、 mysql 、 redis 等。
我的想法是再添加一个 nginx 容器,用来做反向代理。根据子域名进行分发,可以分发给 laradock,也可以给其他任何容器(包括 wordpress、 python 、java)等等
修改 lradock
要修改的只有一个地方,就是 nginx 监听的端口。
-
进入到
laradock
目录中 -
修改
.env
文件,修改NGINX_HOST_HTTP_PORT
值由80
为8000
-
停止
nginx
,docker-compose stop nginx
-
重装
nginx
,docker-compose build nginx
-
启动
docker-compose up -d nginx
这个时候在浏览器中是不能访问成功的,因为 nginx 已经不再监听 80
端口。
添加 nginx 容器
新添加一个 nginx 容器用来做反向代理。在安装 laradock 的时候,已经有了 nginx:alpine
的镜像,可以直接生成容器。当然你也可以重新 pull
一个新的镜像。(推荐使用 alpine
版本)
-
查看 nginx 镜像 ID,
docker iamges
-
生成新的 ngixn 容器,
docker run --name proxy_nginx -p 80:80 -d [nginx image id]
。也可以添加-v
参数来映射配置文件,我的环境较少变动就不需要了 - 此时在浏览器中访问,应该是 nginx 的默认页面,说明启动成功
-
进入到生成的容器中
docker exec -it proxy_nginx sh
-
安装
vim
,apk add vim
-
查看宿主机 ip,
/sbin/ip route|awk '/default/ { print $3 }'
-
在
/etc/nginx/conf.d/
目录下添加新配置文件laradock.conf
,内容如下
server { listen 80; server_name you_sits; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://[宿主机IP]:8000; } }
-
退出容器,然后重启
docker restart proxy_nginx
-
打开
8000
端口,参考这里
结语
这个时候访问的话,就可以代理到 laradock 中的 nginx 了。后续想要新增其他的容器,只要在 proxy_nginx 中添加新的代理规则就可以了。
参考资料: 【转载】记一次用 Docker 运行 Nginx 容器做域名反向代理时踩的坑 、 如何从容器内部获取主机IP 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- docker – 启动具有多个网络接口的容器
- 监控多个Kubernetes集群
- 管理多个远端仓库
- Git 推送到多个仓库
- 运行多个 npm script
- Python:尝试反序列化文件中的多个JSON对象,每个对象跨越多个但一致的间隔数量的行
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux内核设计与实现(原书第3版)
Robert Love / 陈莉君、康华 / 机械工业出版社华章公司 / 2011-4-30 / 69.00元
《Linux内核设计与实现(原书第3版)》详细描述了Linux内核的设计与实现。内核代码的编写者、开发者以及程序开发人员都可以通过阅读本书受益,他们可以更好理解操作系统原理,并将其应用在自己的编码中以提高效率和生产率。 《Linux内核设计与实现(原书第3版)》详细描述了Linux内核的主要子系统和特点,包括Linux内核的设计、实现和接口。从理论到实践涵盖了Linux内核的方方面面,可以满......一起来看看 《Linux内核设计与实现(原书第3版)》 这本书的介绍吧!