Can';t使用IP访问Docker数据库(仅本地主机)
我正在尝试设置Docker以允许从网络上的其他设备进行连接。当前,要访问Docker,我访问计算机上的Can';t使用IP访问Docker数据库(仅本地主机),docker,networking,localhost,Docker,Networking,Localhost,我正在尝试设置Docker以允许从网络上的其他设备进行连接。当前,要访问Docker,我访问计算机上的localhost。我正在尝试使用计算机的本地IP(192.168.0.140)进行连接,该IP允许我查看文件,但不能连接到数据库 我认为这是我的配置中的一个问题,但我对Docker了解不够,无法解决它 version: '2' services: webserver: build: ./docker/webserver image: localdev ports:
localhost
。我正在尝试使用计算机的本地IP(192.168.0.140
)进行连接,该IP允许我查看文件,但不能连接到数据库
我认为这是我的配置中的一个问题,但我对Docker了解不够,无法解决它
version: '2'
services:
webserver:
build: ./docker/webserver
image: localdev
ports:
- '80:80'
- '443:443'
volumes:
- ./www:/var/www/html
links:
- db
db:
image: mysql:5.6
ports:
- 3306
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=secret
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
links:
- db
environment:
PMA_HOST: db
PMA_PORT: 3306
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: secret
ports:
- '8080:80'
任何帮助都将不胜感激。也许您应该这样做:
version: '2'
services:
webserver:
build: ./docker/webserver
image: localdev
ports:
- '0.0.0.0:80:80' # Map container port 80 on your "public" ip on port 80, it will be available on the network
- '0.0.0.0:443:443' # Same for port 443
volumes:
- ./www:/var/www/html
links:
- db
db:
image: mysql:5.6
# ports:
# - 3306 # You don't need to map port 3306 because mysql already expose this port for others containers, unless you wan't to access to your mysql directly
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=secret
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
#links:
# - db # Not necessary, with docker-compose v2 every containers are in the same network and see each other
environment:
PMA_HOST: db
PMA_PORT: 3306
MYSQL_USER: root
MYSQL_ROOT_PASS
WORD: secret
ports:
- 'localhost:8080:80' # to keep your phpmyadmin only available from localhost.
您能够连接到其他容器的原因是您已经映射了容器和主机之间的端口。 对于正在使用短端口语法的数据库:
ports:
- 3306
这将在主机上选择一个随机端口。要能够连接到数据库,请使用长格式语法:
ports:
- '3306:3306'
在这种情况下,您将能够连接到
localhost:3306
上的数据库。由于存在一些有效点,因此不确定为什么会被否决。但是,我更改了设置,仍然无法访问IP上的数据库-仅在localhost
上,这表明某些设置仍然不正确…我希望这可能会修复它,但它没有产生任何影响。我仍然无法从内部IP访问端口。我可以从http://192.168.0.104:8080/
,并且可以访问文件,但除非从本地主机查看,否则CMS不会连接到数据库。