使用nginx-proxy托管Wiki.js

39次阅读
没有评论

问题描述

在尝试使用docker-composeWiki.js托管在服务器上时遇到了困难。他的当前设置是使用反向代理进行docker-compose,最终目标是托管一些服务。他已经成功地托管了Portainer(使用了一个指南)。并且他可以将Wiki.js托管在自己的docker容器中,但是将这两个服务放在一起时,出现了502错误。然而,Portainer仍然可以正常工作。

以下是他的docker-compose.yml文件:

version: '2'
services:
  proxy:
    image: jwilder/nginx-proxy
    container_name: proxy
    restart: unless-stopped
    labels:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - certs:/etc/nginx/certs:rw
      - vhost.d:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - ./uploadsize.conf:/etc/nginx/conf.d/uploadsize.conf:ro
    ports:
      - "80:80"
      - "443:443"
    networks:
      - "default"
      - "proxy-tier"
  proxy-letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt
    restart: unless-stopped
    environment:
      - NGINX_PROXY_CONTAINER=proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    volumes_from:
      - "proxy"
    depends_on:
      - "proxy"
    networks:
      - "default"
      - "proxy-tier"
  portainer:
    image: portainer/portainer
    container_name: portainer
    restart: always
    environment:
      - VIRTUAL_HOST=docker.example.com
      - LETSENCRYPT_HOST=docker.example.com
      - LETSENCRYPT_EMAIL=me@example.com
    volumes:
      - ./portainer/:/data
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "9000:9000"

## Wiki.js specific container (db)
  db:
    image: postgres:11-alpine
    container_name: wiki
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs
    logging:
      driver: "none"
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data

## Wiki.js specific container (app)
  wiki:
    image: requarks/wiki:2
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
      VIRTUAL_HOST: wiki.example.ml
      LETSENCRYPT_HOST: wiki.example.ml
      LETSENCRYPT_EMAIL: me@example.com
    restart: always
    ports:
      - "8010:3000"
volumes:
  certs:
  vhost.d:
  html:
  db-data:
networks:
  proxy-tier:

解决方案

请注意以下操作可能因版本差异或配置不当而有所不同。确保备份重要数据。

使用nginx-proxy托管Wiki.js的解决方案

当出现502错误时,很可能是由于nginx代理无法连接到Wiki.js容器引起的。为了解决这个问题,你需要将nginx代理容器加入与Wiki.js容器相同的Docker网络中,这样它们之间就可以进行正确的通信。

以下是解决方案的步骤:

  1. 打开你的docker-compose.yml文件。
  2. 找到wiki容器的部分,确保它的depends_on属性中包含proxy
  3. 确保networks部分中,wiki容器和proxy容器都在同一个网络中,这里是proxy-tier
  4. 保存并关闭docker-compose.yml文件。
  5. 在命令行中导航到包含docker-compose.yml文件的目录,并执行以下命令来重新启动服务:docker-compose up -d

通过执行上述步骤,你可以确保nginx代理容器与Wiki.js容器在同一网络中,从而解决502错误问题。

请注意,这只是一种可能的解决方案。在配置文件中,确保wiki容器依赖于proxy容器,并且它们都在同一个网络中,这可以帮助你解决502错误问题。

注意事项和备份

在进行任何更改之前,请确保对配置文件和数据进行适当的备份。这可以帮助你在出现问题时恢复到之前的状态。

结论

通过将nginx代理容器加入与Wiki.js容器相同的Docker网络中,你可以解决502错误问题,并成功地使用nginx-proxy托管Wiki.js。

参考链接

以上解决方案可以帮助你在使用nginx-proxy托管Wiki.js时解决502错误问题。如果你有任何疑问或需要进一步帮助,请随时提问。

正文完