伙计们,我有一个在其主机B上附加了域名的docker容器A,在主机B上也附加了一个域名.....如何通过A的域名而不是A来访问该容器A B在主机B的本地网络上的计算机C的IP地址或域名。
因此C -> A( via wwww.cname.url)
而不是C -> B( www.bname.url:port) -> A
E.G。
以下是带有服务的docker-compose
version: "3.2"
services:
php:
links:
- mysql
image: arm32v6/php:7.1.24-fpm-alpine3.8-lavalite
networks:
- backend
working_dir: /var/www/html
volumes:
- ./website/:/var/www/html/
privileged: true
node:
domainname: docker.local
hostname: node
networks:
frontend:
aliases:
- node.docker.local
links:
- "apache:dev.docker.local"
depends_on:
- apache
image: arm32v7/node:latest
entrypoint: yarn
command: twill-dev
volumes:
- ./website:/usr/src/app
working_dir: /usr/src/app
ports:
- "3000:3000"
- "3001:3001"
apache:
domainname: docker.local
hostname: dev
image: arm32v7/httpd:2.4
depends_on:
- php
- mysql
networks:
frontend:
aliases:
- apache
- dev.docker.local
backend:
aliases:
- apache
privileged: true
ports:
- "8880:80"
working_dir: /var/www/html
volumes:
- ./website/:/var/www/html/
- ./httpd.conf:/usr/local/apache2/conf/httpd.conf
- ./fpm.conf:/usr/local/apache2/conf/extra/httpd-vhosts.conf
mysql:
image: yobasystems/alpine-mariadb:arm32v7
volumes:
- ./datadir:/var/lib/mysql
networks:
- backend
environment:
- MYSQL_VERSION=5.7
- MYSQL_ROOT_PASSWORD=rootpassword
- MYSQL_USER=test
- MYSQL_PASSWORD=testpass
- MYSQL_DATABASE=test_db
networks:
frontend:
external:
name: localnet
backend:
我希望能够通过其域名设置为 dev.docker.local 的域名访问服务 apache ,该服务器的ip位于网络17.18.0.1/24
主机的IP地址在网络192.168.1.0/24上,域名为dev.server.local
我在192.168.1.0/24网络上有一台开发PC,它可以通过主机IP以及通常用于特定服务的端口访问服务容器。
更新 可以从网络外部通过server.local到达主机 我的网络接口包含以下条目
dns-search server.local
dns-domain server.local
docker容器具有以下内容
主机名nginx 域名server.local
我还需要编辑一个主机文件或resolv.conf文件吗?
似乎主机正在运行avahi服务发现。这会影响什么吗?
我可以
答案 0 :(得分:1)
您可以通过将nginx容器配置为绑定到子域的容器来实现此目的。
例如,主机可以通过域example.com
访问,而您想在php.example.com
上访问php容器,则可以使用以下设置:
services:
php:
image: arm32v6/php:7.1.24-fpm-alpine3.8-lavalite
environment:
- VIRTUAL_HOST=php.example.com
nginx-proxy:
image: jwilder/nginx-proxy
depends_on:
- php
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
对子域的任何请求都将首先发送到主机,这受到nginx的约束,nginx依次注册,因为请求了子域php
,它将把用户发送到该容器。
我希望这可以为您提供帮助,如果您有任何疑问,请告诉我