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

需要登入才可留言!

类似文章


linux,docker,wifi

用docker创建WPA2/EAP企业用Radius验证伺服器,后端使用mysql数据库

AP提供了WPA2/EAP功能,但不会用吗? 本文介绍我如何透过docker的ubuntu:21.04 image,极速创建Radius伺服器, 与Wifi的WPA2/EAP等相关运用。

docker,sqlserver

D-Laravel创建SQLServer环境

如何创建D-Laravel的SQLSever环境

docker,cli

Docker容器格式化显示

我觉的如果要写一些自动化功能,或许能够格式化的输出容器内容还满有用的。以下一些Docker容器格式化显示命令的参考范例