Rails 使用 Kamal 部署 rails 项目遇到了点问题。

wangyanzi321 · 2023年12月16日 · 最后由 yukihiro_matz 回复于 2023年12月21日 · 557 次阅读

我在研究学习使用 kamal 部署 rails 项目,由于我的 vps 上已经有 nginx 项目配合一些其它的 php 项目进行了部署。导致我无法把 80 端口给 kamal 中使用的 traefik。同时我的 tls 也都是使用的 cloudflare 进行自动配置的。我解析了一个域名 a.bcd.com 到我都机器上 192.168.1.100 上。部署以后我在 nginx 中配置了反向代理到 rails 的服务 3000 端口上,结果无法访问到服务。 因为从来没接触过 traefik。现在不知道哪里配置有问题,有懂得可以给点提示吗? 请求外部访问请求流程是 用户---(https)--> cloudflare --(http)-->Vps Nginx ----> 反向代理 -->localhost:3000

目前的设置是这样的:

service: my-app
image: ao233/kamal-test
servers:
  web:
    hosts:
      - 192.168.1.100
    labels:
      traefik.http.routers.web.rule: Host(`a.bcd.com`)
registry:
  username: ao233
  password:
    - KAMAL_REGISTRY_PASSWORD
env:
  secret:
   - RAILS_MASTER_KEY
traefik:
  host_port: 3000
  args:
    entrypoints.web.address: ':3000'

试试 不用 Traefik,用 Nginx 代理到 kamal 启动的容器端口,还在 Mrsk 的时候我是这么兼容的

nginx 代理请求到 traefik, traefik 不用 80

ham 回复

不用 traefik 不太好,部署服务会中断

yukihiro_matz 回复

我也是这么想的,但是目前的设置走不通。不知道哪里设置有问题。您是否懂 traefik,我上面的配置哪里有问题,您知道吗?很头疼,而且不用 traefik 我也不知道怎么设置,我发现 kamal 会默认用 traefik,而且 rails 服务镜像开的端口也无法挂在到 0.0.0.0 上

ham 回复

您知道不用 traefik 怎么把 rails 服务容器的端口映射到宿主的 0.0.0.0 上吗?部署上去端口不在 0.0.0.0 上我无法将 nginx 的反向代理直接对接到 rails 服务上。

ham 回复

奥,终于在研究了一下 docker 说明文档的情况下搞定了不经过 traefik 代理。大概配置文件改成这样,原来 docker 的 -p 其实是 --publish 的缩写,这样就可以写到 options 里了。但是还是没研究懂 traefik,不过我的应用没啥访问量,可以在空闲时发布。有没有不间断发布,影响不大。

service: my-app
image: ao233/kamal-test
servers:
  web:
    hosts:
      - 192.168.1.100
    options:
      publish: "3000:3000"
    traefik: false

registry:
  username: ao233
  password:
    - KAMAL_REGISTRY_PASSWORD
env:
  secret:
   - RAILS_MASTER_KEY

wangyanzi321 回复

这个搞会有端口冲突

需要 登录 后方可回复, 如果你还没有账号请 注册新账号