在nginx / nxgin-proxy容器内使用Nextcloud与其他服务一起使用

我试图获得下一个nextcloud:fpm图像运行一个nginx泊坞窗图像加上一个neginx-proxy泊坞窗图像,并尝试从同一个nginx图像除了netxcloud(例如sonarr等)以外的几个服务。

在orde做到这一点,我想configuration的一切,所以当我尝试: http//my-server.com/nextcloud我提出与nexcloud,当我做“http // my-server.com / sonarr`我去声纳服务。

我创build了一个如下的目录: nginx ,其中包含与nginx相关的所有内容。 里面nginx nextcloud`我在哪里configurationnexcloud。

nginxdocker-compose.yml是:

 version: '2' services: proxy: image: jwilder/nginx-proxy container_name: proxy ports: - 80:80 - 443:443 volumes: - /mnt/server/proxy/conf.d:/etc/nginx/conf.d - /mnt/server/proxy/vhost.d:/etc/nginx/vhost.d - /mnt/server/proxy/html:/usr/share/nginx/html - /mnt/server/proxy/certs:/etc/nginx/certs:ro - /var/run/docker.sock:/tmp/docker.sock:ro networks: - proxy-tier restart: always letsencrypt-companion: image: alastaircoote/docker-letsencrypt-nginx-proxy-companion container_name: letsencrypt-companion volumes_from: - proxy volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /mnt/server/proxy/certs:/etc/nginx/certs:rw restart: always web: # image: nginx:alpine image: nginx container_name: nginx-webserver volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - /mnt/server/nextcloud:/var/www/html/nextcloud/ external_links: - nextcloud environment: - VIRTUAL_HOST=my-server.com - VIRTUAL_NETWORK=nginx-proxy - VIRTUAL_PORT=80 - LETSENCRYPT_HOST=my-server.com - LETSENCRYPT_EMAIL=myemail@google.com networks: - proxy-tier restart: always networks: proxy-tier: external: name: nginx-proxy 

nginx.conf

 user www-data; events { worker_connections 768; } http { upstream docker-nextcloud { server nextcloud:9000; } server { listen 80; location /nextcloud { proxy_pass http://docker-nextcloud; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; server_name_in_redirect on; } 

在下一个目录下,我docker-compose.yml

 version: '2' services: nextcloud: image: nextcloud:fpm container_name: nextcloud links: - db volumes: - /mnt/server/nextcloud:/var/www/html/nextcloud/ - /mnt/server/nextcloud/apps:/var/www/html/nextcloud/apps/ - /mnt/server/nextcloud/config:/var/www/html/nextcloud/config/ - /mnt/server/nextcloud/data:/var/www/html/nextcloud/data/ networks: - proxy-tier restart: always db: image: postgres container_name: db volumes: - /mnt/server/nextcloud/db:/var/lib/postgresql/ environment: - POSTGRES_DB=nextcloud - POSTGRES_USER=nextcloud - POSTGRES_PASSWORD=somepassword networks: - proxy-tier restart: always networks: proxy-tier: external: name: nginx-proxy 

这一切都失败,在nginx泊坞窗容器日志中的消息:

 2017/08/19 15:05:09 [error] 8#8: *3 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 172.18.0.6, server: , request: "GET /nextcloud/ HTTP/1.1", upstream: "http://172.18.0.4:9000/nextcloud/", host: "my-server.com" 172.18.0.6 - - [19/Aug/2017:15:05:09 +0000] "GET /nextcloud/ HTTP/1.1" 502 173 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0" 

我正在使用这个设置,它工作得很好:

NGINX REVERSE PROXY:

 version: '3' services: nginx-web: image: nginx labels: com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true" container_name: ${NGINX_WEB} restart: always ports: - "${IP}:80:80" - "${IP}:443:443" volumes: - ${NGINX_FILES_PATH}/conf.d:/etc/nginx/conf.d - ${NGINX_FILES_PATH}/vhost.d:/etc/nginx/vhost.d - ${NGINX_FILES_PATH}/html:/usr/share/nginx/html - ${NGINX_FILES_PATH}/certs:/etc/nginx/certs:ro - ${NGINX_FILES_PATH}/htpasswd:/etc/nginx/htpasswd:ro nginx-gen: image: jwilder/docker-gen command: -notify-sighup ${NGINX_WEB} -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf container_name: ${DOCKER_GEN} restart: always volumes: - ${NGINX_FILES_PATH}/conf.d:/etc/nginx/conf.d - ${NGINX_FILES_PATH}/vhost.d:/etc/nginx/vhost.d - ${NGINX_FILES_PATH}/html:/usr/share/nginx/html - ${NGINX_FILES_PATH}/certs:/etc/nginx/certs:ro - ${NGINX_FILES_PATH}/htpasswd:/etc/nginx/htpasswd:ro - /var/run/docker.sock:/tmp/docker.sock:ro - ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro nginx-letsencrypt: image: jrcs/letsencrypt-nginx-proxy-companion container_name: ${LETS_ENCRYPT} restart: always volumes: - ${NGINX_FILES_PATH}/conf.d:/etc/nginx/conf.d - ${NGINX_FILES_PATH}/vhost.d:/etc/nginx/vhost.d - ${NGINX_FILES_PATH}/html:/usr/share/nginx/html - ${NGINX_FILES_PATH}/certs:/etc/nginx/certs:rw - /var/run/docker.sock:/var/run/docker.sock:ro environment: NGINX_DOCKER_GEN_CONTAINER: ${DOCKER_GEN} NGINX_PROXY_CONTAINER: ${NGINX_WEB} networks: default: external: name: ${NETWORK} 

这为Nextcloud容器设置:

 version: '3' services: cloud-db: container_name: ${DB_CONTAINER_NAME} image: mariadb:latest restart: unless-stopped volumes: - ${LOCAL_DB_DIR}:/var/lib/mysql environment: MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} cloud-app: depends_on: - cloud-db container_name: ${APP_CONTAINER_NAME} image: nextcloud:latest restart: unless-stopped volumes: - ${LOCAL_DATA_DIR}:/var/www/html - ${LOCAL_CONF_DIR}:/var/www/html/config - ${LOCAL_APPS_DIR}:/var/www/html/apps environment: NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER} NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD} NEXTCLOUD_DATA_DIR: ${NEXTCLOUD_DATA_DIR} NEXTCLOUD_TABLE_PREFIX: ${NEXTCLOUD_TABLE_PREFIX} VIRTUAL_HOST: ${VIRTUAL_HOST} LETSENCRYPT_HOST: ${LETSENCRYPT_HOST} LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_HOST: ${MYSQL_HOST} networks: default: external: name: ${NETWORK} 

所有从这里提出:

  1. 多克尔-撰写-LetsEncrypt-Nginx的代理,伴侣

  2. 多克尔- Nextcloud-LetsEncrypt

编辑:

正如您提到的FPM映像,您必须为Nextcloud容器添加以下环境操作:

 environment: [..] VIRTUAL_ROOT: /var/www/html VIRTUAL_PROTO: fastcgi 

或者你可以按照Nextcloud的例子:

https://github.com/nextcloud/docker/tree/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm