问题描述
在尝试使用docker-compose
将Wiki.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网络中,这样它们之间就可以进行正确的通信。
以下是解决方案的步骤:
- 打开你的
docker-compose.yml
文件。 - 找到
wiki
容器的部分,确保它的depends_on
属性中包含proxy
。 - 确保
networks
部分中,wiki
容器和proxy
容器都在同一个网络中,这里是proxy-tier
。 - 保存并关闭
docker-compose.yml
文件。 - 在命令行中导航到包含
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错误问题。如果你有任何疑问或需要进一步帮助,请随时提问。
正文完