Docker

Nextcloud容器無法訪問

  • September 22, 2021

我正在嘗試使用 https 和 mysql 以及 docker-compose 在 debian 10 VM 中創建 nextcloud 設置,但是當我訪問https://cloud.example.org>時,我的瀏覽器顯示無法訪問。如果我訪問連結<https://example.org它會給出這個頁面:

範例域

此域用於文件中的說明性範例。您可以在沒有事先協調或徵得許可的情況下在文學作品中使用此域。

這是我的 docker-compose.yml 文件

version: '3'

services:
   nginx-proxy:
       image: jwilder/nginx-proxy:alpine
       labels:
           - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
       container_name: nextcloud-proxy
       networks:
           - nextcloud_network
       ports:
           - 80:80
           - 443:443
       volumes:
           - /home/dev/nextcloud-data/nginx/vhost.d:/etc/nginx/vhost.d:rw
           - /home/dev/nextcloud-data/nginx/html:/usr/share/nginx/html:rw
           - /home/dev/nextcloud-data/nginx/certs:/etc/nginx/certs:ro
           - /etc/localtime:/etc/localtime:ro
           - /var/run/docker.sock:/tmp/docker.sock:ro

       restart: unless-stopped

   letsencrypt:
       image: jrcs/letsencrypt-nginx-proxy-companion
       container_name: nextcloud-letsencrypt
       depends_on:
           - nginx-proxy
       networks:
           - nextcloud_network
       volumes:
           - /home/dev/nextcloud-data/nginx/vhost.d:/etc/nginx/vhost.d:rw
           - /home/dev/nextcloud-data/nginx/html:/usr/share/nginx/html:rw
           - /home/dev/nextcloud-data/nginx/certs:/etc/nginx/certs:rw
           - /etc/localtime:/etc/localtime:ro
           - /var/run/docker.sock:/var/run/docker.sock:ro
       restart: unless-stopped

   mysql:
       image: mariadb
       container_name: nextcloud-mysql
       networks:
           - nextcloud_network
       volumes:
           - /home/dev/nextcloud-data/database/mysql:/var/lib/mysql
           - /etc/localtime:/etc/localtime:ro
       environment:
           - MYSQL_ROOT_PASSWORD=mysql_root_testpassword
           - MYSQL_PASSOWRD=nexcloud_testp@ssw0rd
           - MYSQL_DATABASE=nextcloud
           - MYSQL_USER=nextcloud
       restart: unless-stopped

   nextcloud-app:
       image: nextcloud:latest
       container_name: nextcloud-app
       networks:
           - nextcloud_network
       depends_on:
           - letsencrypt
           - nginx-proxy
           - mysql
       volumes:
           - /home/dev/nextcloud-data/data/html:/var/www/html
           - /home/dev/nextcloud-data/data/config:/var/www/html/config
           - /home/dev/nextcloud-data/data/data:/var/www/html/data
           - /home/dev/nextcloud-data/data/themes:/var/www/html/themes
           - /etc/localtime:/etc/localtime:ro
       environment:
           - VIRTUAL_HOST=cloud.example.org
           - LETSENCRYPT_HOST=cloud.example.org
           - LETSENCRYPT_EMAIL=root@example.org
       restart: unless-stopped

networks:
   nextcloud_network:

如果我執行這個命令:

curl -I https://example.org

輸出是:

HTTP/2 200
content-encoding: gzip
accept-ranges: bytes
age: 427989
cache-control: max-age=604800
content-type: text/html; charset=UTF-8
date: Tue, 21 Sep 2021 18:33:43 GMT
etag: "3147526947"
expires: Tue, 28 Sep 2021 18:33:43 GMT
last-modified: Thu, 17 Oct 2019 07:18:26 GMT
server: ECS (dcb/7EEF)
x-cache: HIT
content-length: 648

對於命令

curl -I https://cloud.example.org

輸出是:

curl: (6) Could not resolve host: cloud.example.org

URL 僅對我們人類存在,機器在 IP 地址上工作。當您將瀏覽器指向該地址時,您的系統實際上會進行 DNS 查詢以找到相應的 IP 地址並連接到該地址。https://example.com是 IANA 為文件目的而提供的網頁,有一個執行 Web 服務的實際系統,該系統具有實際的 IP 地址,並且為了使其可訪問,有相應的 DNS 條目。

無法訪問 cloud.example.com 的原因很簡單,即沒有人提供可通過該 DNS 名稱訪問的任何服務。因此沒有相應的 IP 地址,也沒有 DNS 條目。由於 IANA 已將 example.com 保留用於文件目的,因此其子域(如 cloud.example.com)通常用作培訓材料中的範例。

如果你想使用這個 DNS 名稱進行測試,你可以在自己的 Intranet 中設置一個伺服器來提供一些服務。您還可以設置您的內部 DNS 伺服器並創建適當的條目,或者您可以簡單地將名稱和相應的(私有)IP 地址添加到您嘗試訪問它的系統的主機文件中。

引用自:https://unix.stackexchange.com/questions/670012