【问题标题】:Start two wikijs containers with one docker-compose.yml and seperate database (postgres) through traefik用一个 docker-compose.yml 启动两个 wiki js 容器,并通过 traefik 分离数据库(postgres)
【发布时间】:2020-08-15 08:16:59
【问题描述】:

我正在尝试通过 traefik 启动两个具有不同数据库的 wikijs 容器。我启动容器没有问题。我可以在子域上启动 traefik,甚至可以在不同的子域上启动两个 wiki。我的问题如下:每次启动 wikijs 容器时,我总是以某种方式使用相同的数据库,但我不知道如何更改它。

目的是,我的客户希望为他们的文档创建一个单独的 wiki。所以我想启动尽可能多的 wikijs 容器,但最好通过一个 docker-compose.yml 文件。

谁能告诉我,我做错了什么?谢谢=)

这是我的 traefik.toml 文件:

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.http]
    address = ":80"
      [entryPoints.http.redirect]
        entryPoint = "https"
  [entryPoints.https]
    address = ":443"
      [entryPoints.https.tls]
  [entryPoints.dashboard]
    address = ":8080"
    [entryPoints.dashboard.auth]
      [entryPoints.dashboard.auth.basic]
        users = ["admin:$apr1$Ld55R9Cl$/8W5BCc.J/Qtg9Xtpk4lq0"]

[api]
entrypoint="dashboard"

[acme]
email = "email@domain.com" 
storage = "acme.json"
entryPoint = "https"
onHostRule = true
  [acme.httpChallenge]

这是我的 docker-compose.yml 文件:

services:

  db:
    image: postgres:11-alpine
    networks:
      - internal
    labels:
      - "traefik.enable=false"
    environment:
      POSTGRES_DB: wiki1
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs

    logging:
      driver: "none"
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data
  db1:
    image: postgres:11-alpine
    networks:
      - internal
    labels:
      - "traefik.enable=false"
    environment:
      POSTGRES_DB: wiki2
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs

    logging:
      driver: "none"
    restart: unless-stopped
    volumes:
      - db-data1:/var/lib/postgresql/data

  wiki1:
    image: requarks/wiki:2
    networks:
      - internal
      - web
    labels:
      - "traefik.enable=true"
      - "traefik.backend=wiki1"
      - "traefik.docker.network=web"
      - "traefik.frontend.rule=Host:domain.com"
      - "traefik.http.services.wiki.loadbalancer.server.port=3000"

    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
    restart: unless-stopped

  wiki2:
    image: requarks/wiki:2
    networks:
      - internal
      - web
    labels:
      - "traefik.enable=true"
      - "traefik.backend=wiki2"
      - "traefik.docker.network=web"
 - "traefik.frontend.rule=Host:domain.com"                                                                                                                                                                                        - "traefik.http.services.wiki.loadbalancer.server.port=3000"

    depends_on:
      - db1
    environment:
      DB_TYPE: postgres
      DB_HOST: db1
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wikispiral
    restart: unless-stopped

  adminer:
    image: adminer:4.6.3-standalone
    labels:
      - traefik.backend=adminer
      - traefik.frontend.rule=Host:domain.com
      - traefik.docker.network=web
      - traefik.port=8080
    networks:
      - internal
      - web
    depends_on:
      - db
      - db1
volumes:
  db-data:
  db-data1:
networks:
  web:
    external: true
internal:
    external: false

【问题讨论】:

    标签: postgresql docker docker-compose ubuntu-18.04 traefik


    【解决方案1】:

    两个数据库在同一个网络上:

    networks:
          - internal
    

    并在同一个端口上监听:

    DB_PORT: 5432
    

    因此,将每个数据库放在它自己的网络中,然后将该网络添加到 wiki 服务,或者更改其中一个正在侦听的端口。

    【讨论】:

    • 非常感谢!在为每个 db 和 wikijs 使用不同的网络后,我让它工作了。我还设置了不同的卷并将其留在同一个端口上。现在它工作了=)
    • 请始终记住对帮助/解决您的问题的答案进行投票和/或标记为已接受。
    猜你喜欢
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多