【发布时间】:2020-02-20 12:55:44
【问题描述】:
我正在尝试使用 docker-compose 和 Traefik 设置一个简单的 Nextcloud Stack。
这是我的 docker-compose.yml
version: '3.7'
services:
nextcloud-database:
image: mariadb
container_name: nextcloud-database
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- $PWD/db:/var/lib/mysql
env_file:
- db.env
networks:
- backend
logging:
options:
max-size: '12m'
max-file: '5'
driver: json-file
nextcloud-redis:
image: redis:alpine
container_name: nextcloud-redis
restart: always
networks:
- backend
nextcloud-cron:
image: nextcloud:latest
container_name: nextcloud-cron
restart: always
volumes:
- $PWD/cloud:/var/www/html
entrypoint: /cron.sh
networks:
- backend
nextcloud-app:
image: nextcloud:latest
container_name: nextcloud-app
restart: always
volumes:
- $PWD/config:/var/www/html/config
- $PWD/cloud:/var/www/html
- $PWD/apps:/var/www/html/apps
- $PWD/data:/var/www/html/data
environment:
- NEXTCLOUD_DATA_DIR=/var/www/html/data
- MYSQL_HOST=nextcloud-database
env_file:
- db.env
depends_on:
- nextcloud-database
- nextcloud-redis
- nextcloud-cron
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.entrypoints=http"
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.blablubb.de`)"
- "traefik.http.middlewares.nextcloud-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.nextcloud.middlewares=nextcloud-https-redirect"
- "traefik.http.routers.nextcloud-secure.entrypoints=https"
- "traefik.http.routers.nextcloud-secure.rule=Host(`nextcloud.blablubb.de`)"
- "traefik.http.routers.nextcloud-secure.tls=true"
- "traefik.http.routers.nextcloud-secure.tls.certresolver=http"
- "traefik.http.routers.nextcloud-secure.service=nextcloud"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
- "traefik.docker.network=proxy"
networks:
- proxy
- backend
logging:
options:
max-size: '12m'
max-file: '5'
driver: json-file
networks:
proxy: # this is the network provided by traefik
external: true
backend:
external: false
和 db.env
MYSQL_PASSWORD="waff"
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MYSQL_ROOT_PASSWORD="waff"
可以通过域 nextcloud.blablbb.de 访问 Nextcloud 实例。 所以我的问题: 我的 nextcloud-docker 容器需要什么才能相互通信? 我认为它是通过后端网络处理的,但我总是错误消息,f.e. nextcloud-mysql 无法访问。
没有 Treafik,此设置工作正常。
谢谢你们。
【问题讨论】:
-
为什么您的后端网络被标记为非外部网络?
-
为什么要在外部进行内部沟通?
-
我知道——但是你的后端网络是在哪里定义的?
-
在docker compose yml的最后
-
我用我的 docker-compose 尝试过,它抛出了一个关于未定义网络的错误。如果您简单地将后端重命名为默认值怎么办?
标签: docker networking docker-compose traefik