by Devin Yang

建立于: 5年前 ( 更新: 5年前 )

Raspberry很便宜有相当多的运用,例如有人拿来当Wifi的router,
游戏机,监视器及许许多多物联网相关运用,我则是用他来当一台HAProxy。

长话短说,因为有一台老旧的Windows伺服器,他运行旧版本的PHP及Apache,并且无法设置HTTPS证书,所以就想说
透过HAProxy来帮忙啦。让这台老旧伺服器也可以有https的网址,
所以来分享我的docker-compose.yml设。

必要知识:
此文章假设,您已了解haproxy的相关设置了。
如果您还不会在自己的树莓派安装,docker及docker-compose请参考如下网址:
https://www.ccc.tc/article/install-docker-and-docker-compose-on-raspberrypi

关於docker-compose的设置如下:
以下是我的docker-compose.yml设置
version: '3.6'
services:
 haproxy:
  network_mode: host
  image: haproxy
  restart: always
  environment:
    backend_server: 192.168.1.100
  volumes:
    - ./cert.pem:/etc/ssl/cert.pem
    - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
这里有几个重要设置
一、restart: always
当成功启动后,下次再重开,就能自动启动docker-compose了,不用再进入Raspberry里去上命令docker-compose up。
关於重启原则(restart policy),至少需成功的启动10秒后,才代表成功启动,下次重启时,才会自动重启。

二、network_mode: host
这是Linux才能设置的网络模式,可直接让容器绑定的连绑埠绑到host上
(所谓的host指的就是Raspberry,所以就是绑在树莓派的eth0网卡上),
所以我能将Raspberry上进来的流量直接导入到另一台实体的主机(backend_server)上啦。

三、enviroment
我们可以在,enviroment中设置backend_server的位置,
就可以在HAProxy的设置档中,使用这个设置了。

四、volumens
挂载了证书,及haproxy.cfg的设置。

关於docker-compose的基本命令基本知识:
我们可以创建一个haproxy的数据夹,放入docker-compose.yml档及证书,还有haproxy的设置档。
然后,运行
docker-compose up -d
即可启动罗。
停止是:
docker-compose down
如果想要查看log,我们可以运行
docker-compose logs -f


下方是个简单的示意图:
蓝色线是SSL加密的网址,流量进入到HAProxy后,再将流量导向后端(backend_server) ,未加密的网址。


补充
本文假设您已了解haproxy.cfg的各项设置,不对此进行说明,请自行请教Google老师了。
有些与此docker-compose相关的片段的数据供参考。
server web ${backend_server}:80 check cookie s1

#或是
backend mysql
   mode tcp
   server database ${backend_server}:3306
上方的变量,${backend_server}便是我们在docker-compose.yml中设置的192.168.1.100。





 

Tags: docker

Devin Yang

文章内容无法一一说明,如果您有什么不了解处,欢印提问哦:)

No Comment

Post your comment

需要登入才可留言!

类似文章


docker, tinkerwell, tinker, laravel

Tinkerwell与docker环境运用

其实我最近不用Tinkerwell了,因为老是要我花钱更新。要测试直接ssh 主机不就搞定啦不是?

docker

Docker防毒攻略

最近刚看玩延禧攻略,就想来介绍个MacOS扫毒攻略。 这篇文章,教大家用如何用Docker搞定MacOS扫毒。 简单介绍,我们如何透过docker使用防毒软体扫毒。 这里假定目前我的目录是在我的家目录中,所以${PWD}就是目前的所在目录,会被挂载到container内的scan数据夹。 所以,使用clamscan -r /scan/,时就能扫描所有的挡案罗,加上-r的参数会使用递归的方式一层一层的进入子目录扫描。

docker,container,laravel

在Nas上手动更新D-Laravel的使用者id全日志

本文全日志,绍我如何更新我家Nas上的fpm image的uid。 本文章中,您应该会学会查询容器id及commit容器等相关概念。