2017-08-19 114 views
0

我試圖讓nextcloud:fpm泊塢窗圖像運行nginx泊塢窗圖像加上neginx-proxy泊塢窗圖像,並嘗試服務除netxcloud以外的多種服務聲納等)來自相同的nginx圖像。在nginx/nxgin-proxy容器內使用Nextcloud與其他服務一起使用

在orde中這樣做我想配置所有東西,以便當我嘗試時:http//my-server.com/nextcloud我使用nexcloud,當我執行http // my-server.com/sonarr時,我會去sonarr服務。

我創建了一個目錄,例如: nginx其中我擁有與nginx相關的所有內容。 裏面nginx nextcloud`我在哪裏配置nexcloud。

nginx,在docker-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 
     - [email protected] 
    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; 
    } 

nextcloud目錄我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" 
+0

所以你把一個nginx的服務器在nginx的代理圖像的前面?它不應該只是nginx代理,還是將nginx服務器放在nginx代理之後?你有沒有看看下一個雲端的官方docker-compose.yml? https://github.com/nextcloud/docker/blob/master/.examples/docker-compose.yml – metanerd

回答

0

我使用這個設置和it's工作得很好:

NGINX反向代理:

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. Docker-Compose-LetsEncrypt-Nginx-Proxy-Companion

  2. Docker-Nextcloud-LetsEncrypt

編輯:

至於你提到FPM圖像,你必須添加以下環境opions爲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

相關問題