手动创建一个 bridge 网络
docker network create -d bridge mynetwork
所有容器使用这个网络
container:
env:
secret:
- GODADDY_API_KEY
- GODADDY_API_SECRET
options:
network: mynetwork
使用 container name 去连接
POSTGRES_HOST=xxx_app-postgres
首先同一台服务器只会启动一个 traefik 容器,所以第二个项目kamal deploy
的时候会发现已经有了,不会去触碰它。而且因为只会有一个实例,所以两个项目上的 traefik 配置应该是一致的,如果不一致那说明你的部署方案是欠考虑的。
至于 App Containers,则是通过 App Container 本身的 label 去配置中间件,路由规则等,Traefik 会自动发现 (detect) 这些信息,然后正确地做反向代理和负载均衡。
其实你实操一下,看看源代码就很清楚了 https://github.com/basecamp/kamal/blob/main/lib/kamal/cli/traefik.rb#L7,代码还蛮清晰的。
单个服务器本来就一个 Traefik 容器,你只要将你的 App Containers 的一些 LABEL 配置好,Traefik 就能自动依据规则做反向代理
Container 1
traefik.http.routers.web.rule: Host(`a.com`) && PathPrefix(`/`)
traefik.http.routers.web.entrypoints: websecure
Container 2
traefik.http.routers.web.rule: Host(`b.com`) && PathPrefix(`/`)
traefik.http.routers.web.entrypoints: websecure
Ansible
Tooltip 可以用 Stimulus Controller 封装一下,这样就不需要enable_tooltip
其实我感觉如果只是记录一些关键信息 https://github.com/palkan/logidze 这种方案就很好了。理想方案中除了不太适合分析外,其他的都满足。https://github.com/ifad/chronomodel 其实考虑到了视图、触发器的更新,但是如何与应用层信息集成没细看,好像没有提到。
方案三可以参考 https://github.com/ifad/chronomodel,应用层信息集成可能需要改
Awesome. Is it open sourced ?
Good to know.
男神
@Raed FYI: https://ruby-china.org/topics/34296 Good luck.
刚好用过,推荐https://github.com/seamusabshere/upsert,PG9.4 好像不支持 upsert
相处过的让人觉得最舒适的老板和 CTO,思维很年轻,比较"大智",推荐。
#1 楼 @shuke0327 跟雨哥好有缘分
厉害👍
#15 楼 @darkbaby123 Rails 单独抽取 validator 层也很简单
#4 楼 @gonglexin 其实了解了 closure_tree 跟其他 gem 的实现区别后,我依然比较喜欢 ancestry 和 awesome_nested_set . closure_tree 可能假设树形结构的层次会很深,然而一般情况下并不会那么深。再者存储那么深的树形层次感觉也很复杂,越复杂的实现就越难 evolve http://www.hilman.io/blog/2015/09/comparing-ancestry-and-closure_tree/
#28 楼 @southwolf 我以为你在北京
其实我觉得 draw.io 是最好的,它有 Chrome Extension
&& 运算符的两部分是:
z 就是 z 这个 Character
它的注释写得都很明白了啊