我试图让nextcloud:fpm停靠映像与一个nginx停靠映像和一个neginx-proxy停靠映像一起运行,并尝试从同一个nginx映像中提供netxcloud之外的多个服务(例如,sonarr等)。
在orde中,我想配置所有内容,以便当我尝试:http//my-server.com/nextcloud时,我会看到附件云,而当我执行http//my-server.com/ sonarr‘时,我会使用sonarr服务。
我创建了一个类似于:nginx的目录,其中包含与nginx相关的所有内容。在nginx 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
- 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;
}在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"发布于 2018-04-16 15:42:24
下面的行实际上是危险的,我建议您不要在文档之外执行任何其他的卷映射:
- /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/其原因是入口点脚本对所有文件执行rsync到/var/www/html,并删除所有它们没有排除的内容。结果,rsync脚本尝试删除/var/www/html/nextcloud,并且所有的数据都显示在下面。
实际上,如果版本不同,它在内部如何工作:将所有文件从一个文件夹复制到/var/www/html ,并删除除一小组排除文件夹(如/data)之外的所有。这就是为什么它找不到所需的文件的原因:它们只复制到/var/www/html,而不是复制到/var/www/html/nextcloud中。
我认为以下选项是一种解决办法:
nextcloud:apache映像,只需使用nginx作为反向代理重写它:
location /nextcloud/ { proxy_set_header主机$host;proxy_set_header X-Real $remote_addr;proxy_pass http://nextcloud:80;# nexcloud是容器client_max_body_size 1000m的名称;重写^/nextcloud(/.*) $ 1 break;}nextcloud:fpm来监听/,另一个重写/nextcloud (见前面的配置)。修改nginx以使用fpm并重写它看起来非常非常痛苦,您需要确保各种重写不会重叠。我尝试了一些事情,但效果不太好,所以我自己放弃了这种方法。使用默认值的一个好处是使用来自Nextcloud的推荐的nginx配置,该配置在不同版本之间可能有所不同。
发布于 2017-12-19 17:26:25
我正在使用这个装置,它运行得很好:
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}所有在此提出的:
编辑:
正如您提到的FPM映像,您必须为Nextcloud容器添加以下环境操作:
environment:
[..]
VIRTUAL_ROOT: /var/www/html
VIRTUAL_PROTO: fastcgi或者您可以遵循Nextcloud的示例:
https://stackoverflow.com/questions/45773247
复制相似问题