Open shynome opened 3 years ago
穷人的简易 Serverless 部署平台, 基于 docker service 和 caddy tmpdocker
# 直接在 docker 服务器上构建 docker 镜像省得推送 rdocker build . -t tmp/test:0.0.1 # 创建服务, 仅首次创建时需要 rdocker_create tmp/test:0.0.1 '--network main_link' # 更新镜像 rdocker build . -t tmp/test:0.0.2 rdocker_deploy tmp/test:0.0.2
systemctl edit docker.service
docker.service
[Service] ExecStart= # 192.168.1.168 为内网ip地址, 如果不在同一个内网内请自行组网, 我推荐 wg, tinc 这两个组网软件 ExecStart=/usr/sbin/dockerd -H tcp://192.168.1.168 -H fd:// $DOCKER_OPTS
systemctl restart docker.service
设置 caddy service, 这部分请参考: https://github.com/shynome/caddy2-dockerize/tree/master/example
添加 test service 访问入口文件, caddy/tmpdocker/test.conf, 内容如下
test service
caddy/tmpdocker/test.conf
http://test.local { route { tmpdocker tmp_nginx reverse_proxy tmp_nginx:80 } }
重载配置文件使新的配置文件生效, 在caddy service目录下执行make proxy-reload
caddy service
make proxy-reload
新建一个文件 ~/.rdocker.sh, 保存别名
~/.rdocker.sh
# 设置要操控的docker服务器 alias rdocker="DOCKER_HOST=tcp://192.168.1.168 docker" __rdocker_local_image(){ rdocker images $1 --format "{{.ID}}" --no-trunc } __rdocker_service_name(){ echo $1 | awk -F ':' '{print $1}' | sed "s#/#_#g" } rdocker_create(){ rdocker service create --name $(__rdocker_service_name $1) --scale=0 $2 $(__rdocker_local_image $1) } rdocker_deploy(){ rdocker service update --image $(__rdocker_local_image $1) $2 $(__rdocker_service_name $1) }
在 ~/.profile 引用上个文件
~/.profile
... source ~/.rdocker.sh
将上述函数应用到当前命令行 source ~/.rdocker.sh
source ~/.rdocker.sh
Dockerfile
FROM nginx:alpine
.dockerignore
* !Dockerfile
rdocker build . -t tmp/nginx:0.0.1
rdocker_create tmp/nginx:0.0.1 '--network main_link'
main_link
curl -H 'Host: test.local' http://192.168.1.168:80/
FROM nginx:alpine RUN echo "helll world" > /usr/share/nginx/html/index.html
rdocker build . -t tmp/nginx:0.0.2
rdocker_deploy tmp/nginx:0.0.2
简介
穷人的简易 Serverless 部署平台, 基于 docker service 和 caddy tmpdocker
使用方法
设置
环境设置
docker 服务器
systemctl edit docker.service
重载docker.service
, 重载内容为docker.service
以应用更改, 命令是systemctl restart docker.service
在 docker 服务器上设置 caddy service
设置 caddy service, 这部分请参考: https://github.com/shynome/caddy2-dockerize/tree/master/example
添加
test service
访问入口文件,caddy/tmpdocker/test.conf
, 内容如下重载配置文件使新的配置文件生效, 在
caddy service
目录下执行make proxy-reload
本地开发机器的设置
新建一个文件
~/.rdocker.sh
, 保存别名在
~/.profile
引用上个文件将上述函数应用到当前命令行
source ~/.rdocker.sh
最后就是测试了
Dockerfile
文件, 内容如下.dockerignore
文件, 内容如下rdocker build . -t tmp/nginx:0.0.1
rdocker_create tmp/nginx:0.0.1 '--network main_link'
(main_link
是上面caddy service
中的链接网络)curl -H 'Host: test.local' http://192.168.1.168:80/
Dockerfile
文件内容为rdocker build . -t tmp/nginx:0.0.2
rdocker_deploy tmp/nginx:0.0.2
curl -H 'Host: test.local' http://192.168.1.168:80/