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

需要登入才可留言!

类似文章


laravel docker

关於D-Laravel的项目模式

如果您是新使用者,建议您改用我的最新环境phpenv。https://github.com/DevinY/phpenv

openai,flax,docker

用容器跑OpenAI官方教程的Python(Flax)

如果您登录了openai的网站,可在此处看到官方的教程说明https://beta.openai.com/docs/quickstart/build-your-applicationAPI的KEY的申请,就在这页的下方就有按钮了+ Create new secret key本篇教您用Docker跑官方OpenAI运行环境。

php,docker,dlaravel

我创建的phpenv容器环境简单介绍

没时间拍介绍影片,我就来随便抓些画面介绍我使用的容器环境deviny/phpenv。https://github.com/DevinY/phpenvphpenv算是我之前D-Laravel开源项目的进化版本,概念上延用了很多Dlaravel的操作方式。容器的更新上偏向使用者自行控制去Build自己的image,所以我不太会去更动版号了,其实D-Laravel的php版号,好像我也很久没动啦:p