如果我没有在正确的版块发帖,我很抱歉。
我正在使用 Oracle Free tier 作为我的服务器,并且我有一个运行着几个 Docker 容器的 Ubuntu 安装。
我正在使用 Caddy,它也运行在 Docker 中,作为我所有容器的反向代理。
现在我需要设置 Discourse 作为这个拼图的最后一块,但我不知道如何进行。
我已经在我的另一个测试服务器上测试并安装了带有标准 Docker 安装的 Discourse,但那是整个包,如果我需要使用 Caddy 作为反向代理,我猜我需要禁用一些功能?
如果有人能给我指明正确的方向,我将非常感激。
我认为这让我走上了正确的轨道。但不确定我指向的路径是否正确。
在我的 app.yml 中,我在这里设置了我的卷:
并且我的 Discourse 可以顺利构建。
volumes:
- volume:
host: /opt/docker/docker_configs/discourse/shared/standalone
guest: /shared
- volume:
host: /opt/docker/docker_configs/discourse/shared/standalone/log/var-log
guest: /var/log
阅读那个论坛帖子后,我尝试了一些 Caddyfile 的配置。
forum.mydomain.com {
reverse_proxy unix//opt/docker/docker_configs/discourse/shared/standalone/nginx.http.sock
import cloudflare
}
forum.mydomain.com {
reverse_proxy /opt/docker/docker_configs/discourse/shared/standalone/nginx.http.sock
import cloudflare
}
它们都不起作用,但我真的不确定我是否做得对 xD
你如何启动 Caddy?
原始主题中的这一行需要根据你的目录进行调整才能正常工作。除非 Caddy 容器中挂载了正确的目录,否则它无法看到 Discourse 创建的套接字。
啊,你的意思是需要将 discourse sock 挂载到 caddy?这说得通!
不过我昨晚尝试了别的方法。
当 discourse 启动时,它运行在一个 docker 桥接网络中。如果我只是添加所有其他容器(包括 Caddy)所在的 docker-default 网络,那么我就可以像处理其他容器一样简单地将其添加到 caddy 中。
forum.mydomain.com {
reverse_proxy app:80
import cloudflare
}
不过我没能弄清楚那些 yml 文件中定义 docker 网络的地方。如果我能将其从桥接网络改为在 docker 默认网络中运行,那对我来说就一切都解决了。
这可能有所帮助:
虽然它是针对 Nginx Proxy Manager 的,但它描述了将容器置于默认桥接网络下的过程。
1 个赞
是的!它奏效了!
我不得不更改几处,但它几乎和我链接的第一个帖子一样。
在 Caddyfile 中,我必须这样写
这与帖子中的写法略有不同。
forum.mydomain.com {
reverse_proxy unix//sock/nginx.http.sock
import cloudflare
}
并且我添加了 volume,现在想来这当然是有道理的。
我正在使用 docker-compose。
caddy:
container_name: Caddy
build:
dockerfile: ./caddy-config/Dockerfile
context: .
labels:
com.centurylinklabs.watchtower.enable: "false"
ports:
- 80:80
- 443:443
volumes:
- ./docker_configs/caddy/data:/data
- ./docker_configs/caddy/Caddyfile:/etc/caddy/Caddyfile
- ./docker_configs/caddy/srv:/srv
- /var/discourse/shared/standalone:/sock
restart: always
非常感谢您的帮助!
1 个赞
这可能是由于 Caddy 本身的上游更改所致。据我所知,主题中链接的镜像仍可与提供的配置一起使用。
1 个赞