Docker
Nextcloud容器無法訪問
我正在嘗試使用 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 地址添加到您嘗試訪問它的系統的主機文件中。