Traefik Ghost 部署端口映射不起作用

问题描述 投票:0回答:1

我使用 Dokploy 通过 docker compose 和 traefik(反向代理)部署了一个 Ghost 博客实例。我从浏览器访问 Ghost 博客部署时遇到问题:给出 Bad Gateway 错误。 如果我使用 Ghost 部署的默认

2368
端口,那么一切正常,但如果我使用端口映射
3204:2368
在不同端口上访问它,那么我会收到 Bad Gateway 错误。

docker-compose.yml:

name: ghost-live-1
services:
  ghost:
    image: ghost:5-alpine
    container_name: ghost_serv_live_k
    restart: always
    environment:
      database__client: mysql
      database__connection__host: ghst_db
      database__connection__user: ghost
      database__connection__password: ghost
      database__connection__database: ghost
      url: https://blog.mydomain.com
      NODE_ENV: production
    ports:
      - '3204:2368'
    labels:
      - traefik.docker.network=dokploy-network
      - traefik.enable=true
      - traefik.http.routers.ghostlive-ghost-2e1bbd-50-web.rule=Host(`blog.mydomain.com`)
      - traefik.http.routers.ghostlive-ghost-2e1bbd-50-web.entrypoints=web
      - traefik.http.services.ghostlive-ghost-2e1bbd-50-web.loadbalancer.server.port=3204
      - traefik.http.routers.ghostlive-ghost-2e1bbd-50-web.service=ghostlive-ghost-2e1bbd-50-web
      - traefik.http.routers.ghostlive-ghost-2e1bbd-50-web.middlewares=redirect-to-https@file
      - traefik.http.routers.ghostlive-ghost-2e1bbd-50-websecure.rule=Host(`blog.mydomain.com`)
      - traefik.http.routers.ghostlive-ghost-2e1bbd-50-websecure.entrypoints=websecure
      - traefik.http.services.ghostlive-ghost-2e1bbd-50-websecure.loadbalancer.server.port=3204
      - traefik.http.routers.ghostlive-ghost-2e1bbd-50-websecure.service=ghostlive-ghost-2e1bbd-50-websecure
      - traefik.http.routers.ghostlive-ghost-2e1bbd-50-websecure.tls.certresolver=letsencrypt
    volumes:
      - ghost_serv:/var/lib/ghost/content
    depends_on:
      ghst_db:
        condition: service_healthy
    networks:
      - dokploy-network
  ghst_db:
    image: mysql:9
    container_name: ghost_db_live_k
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD=example
      MYSQL_DATABASE=ghost
      MYSQL_USER=ghost
      MYSQL_PASSWORD=ghost
    networks:
      - dokploy-network
    volumes:
      - ghost_db:/var/lib/mysql
    healthcheck:
      test:
        - CMD
        - mysqladmin
        - ping
        - '-h'
        - 127.0.0.1
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 60s
volumes:
  ghost_serv:
    driver: local
  ghost_db:
    driver: local
networks:
  dokploy-network:
    external: true

我是否缺少一些关键配置来解释为什么 traefik 反向代理无法访问 Ghost 容器?

docker-compose port traefik ghost-blog
1个回答
0
投票

这部分代码:

ports:
      - '3204:2368'

告诉 Ghost 应该可以从端口 3204 上的外部容器获得,该端口映射到内部容器端口 2368。

基于您的配置 traefik 和 Ghost 位于同一 docker 网络中

dokploy-network
这意味着 traefik 将直接在内部端口(2368)上连接到 Ghost,并且
docker-compose.yml
中的端口配置在这种情况下不相关。因此,如果您希望 traefik 连接到不同的端口,您需要更新 Ghost 配置,以便它侦听不同的端口,然后是 2368,然后更新其余配置。

似乎这里描述了如何更改幽灵端口:

https://ghost.org/docs/config/

© www.soinside.com 2019 - 2024. All rights reserved.