我正在尝试在docker容器中使用wget连接到我的服务器自己的IP地址以下载图像但它当前超时并且从未连接。
如果我使用localhost作为我的图像的地址,那么我可以访问该图像,但是,我的设置有两个网站(一个用于开发,一个用于实时)。 localhost只能映射到其中一个实例,因此我只能访问livesite(因为默认情况下也会映射到localhost)。
因此我需要一种方法来实际连接到我自己的服务器的IP地址(或者更好地使用我的实际域名,这些域名将通过apahce路由到正确的文件夹,因为连接到我的网站也不能正常工作自己的IP地址在容器内不起作用。)
我怎样才能让它发挥作用?或者|可能导致此问题的原因是什么?
我尝试过的事情:
连接到主机,它可以与自己的IP地址通信就好了。它从容器内部似乎无法做到这一点? (请注意,当我执行命令时,我直接在容器上执行此操作而不是主机)
我验证的文件也来自其他机器并且图像存在并且可以连接到。甚至我自己的机器上的docker也可以在自己的容器中访问服务器图像。
这使我得出结论,如果容器指向主机本身的IP地址,那么它将在超时时失败。
多克尔-Compose.yml
version: "2"
services:
dblive:
image: mysql:5.5.52
volumes:
- ./db_data_live:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ******
MYSQL_DATABASE: ******
MYSQL_USER: ******
MYSQL_PASSWORD: ******
dbdev:
image: mysql:5.5.52
volumes:
- ./db_data_dev:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ********
MYSQL_DATABASE: ******
MYSQL_USER: *****
MYSQL_PASSWORD: ******
phpmyadmin:
depends_on:
- dblive
- dbdev
image: phpmyadmin/phpmyadmin
environment:
PMA_ARBITRARY : 1
restart: always
ports:
- "8081:80"
web:
#build: ./
depends_on:
- dblive
- dbdev
image: poolservice/distribution:latest
volumes:
- ./web:/var/www
- ./config/custom.php.ini:/etc/php5/apache2/conf.d/custom.php.ini
- ./logs/apache_error.log:/var/log/apache2/error.log
- ./logs/apache_access.log:/var/log/apache2/access.log
- ./config/apache_default.conf:/etc/apache2/sites-available/000-default.conf
- ./config/apache_default-ssl.conf:/etc/apache2/sites-available/default-ssl.conf
- ./config/ssl/apache.key:/etc/apache2/ssl/apache.key
- ./config/ssl/apache.crt:/etc/apache2/ssl/apache.crt
- ./web/public_html/livesite:/app
- ./web/public_html/devsite:/appdev
restart: always
ports:
#Standard HTTP Port
- "80:80"
#Below allows access to local computer from outside ports
- "8080:80"
#SSH Port
- "443:443"
#Below allows access to local computer from outside ports
- "4443:443"
答案 0 :(得分:0)
好的,我找到了答案!
在docker-compose文件中,我为我的域名添加了这些命令以访问localhost。
extra_hosts:
- "domain.com:127.0.0.1"
- "dev.domain.tech:127.0.0.1"