【发布时间】:2022-12-14 03:52:18
【问题描述】:
我想从使用 docker run-command 切换到 docker-compose 文件,我的 nextcloud 实例在反向代理 (jwilder/nginx-proxy) 后面运行。
这是我以前使用的运行命令:
sudo docker run -d -p 8080:80 --expose 80 --expose 443 -e VIRTUAL_HOST=nextcloud.example.com -v nextcloud:/var/www/html --restart=always --name=nextcloud nextcloud:24.0.8
我后来在容器中安装了 mariaDB,这样我就不必为网络而烦恼了。此外,我仅在内部网络中使用端口 8080 进行快速上传和下载。
这工作得很好,但现在我想用docker-compose创建一个类似的环境:
version: '3.8'
volumes:
nextcloud:
db:
services:
db:
image: mariadb:10.5
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=my-super-strong-password
- MYSQL_PASSWORD=my-other-super-strong-password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:24.0.8
restart: always
ports:
- 8080:80
expose:
- 80
- 443
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=my-other-super-strong-password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- PHP_MEMORY_LIMIT=1G
- PHP_UPLOAD_LIMIT=128M
- VIRTUAL_HOST=nextcloud.example.com
容器成功启动,我可以在我的内部网络中使用 nextcloud。但是我无法从我的域中联系到他们。相反,我得到一个502 Bad request。 VIRTUAL_HOST 重定向似乎有效,因为我得到的是 503 Service Temporarily Unavailable。
我认为公开端口 80 和 443 不起作用。
我尝试添加代理网络:
networks:
proxy:
driver: bridge
external: true
并添加
networks:
- default
到数据库服务和
networks:
- default
- proxy
到应用程序服务。
那并没有解决问题。你们中有人知道我接下来可以尝试什么吗?
我尝试了不同的方式来公开端口并尝试创建不同的网络
【问题讨论】:
标签: docker networking reverse-proxy nextcloud