所以我在Docker容器中运行了一个Nginx,我在localhost上运行了一个mysql,我想从我的Nginx中连接到MySql.MySql在localhost上运行,而不是将端口暴露给外部世界,所以它绑定在localhost上,而不是绑定在机器的ip地址上.
有没有办法从这个docker容器中连接到这个MySql或localhost上的任何其他程序?
假设我在OSX上的端口8000上运行了一个服务器.我的Docker容器如何通过它访问它localhost:8000?我也无法更改主机名,因为容器中的应用程序不在我的控制范围内.
我已经阅读了之前关于使用--net="host"容器访问主机网络的讨论.但是,我在OSX和Docker在VM中运行,所以来自Docker容器的localhost--net="host"转到VM而不是我的真机.
然后我尝试了端口转发解决方法:VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,8000,,8000";无济于事.
任何建议将不胜感激.
如何从主机连接到docker中的postgres?
泊坞窗,compose.yml
version: '2'
networks:
database:
driver: bridge
services:
app:
build:
context: .
dockerfile: Application.Dockerfile
env_file:
- docker/Application/env_files/main.env
ports:
- "8060:80"
networks:
- database
depends_on:
- appdb
appdb:
image: postdock/postgres:1.9-postgres-extended95-repmgr32
environment:
POSTGRES_PASSWORD: app_pass
POSTGRES_USER: www-data
POSTGRES_DB: app_db
CLUSTER_NODE_NETWORK_NAME: appdb
NODE_ID: 1
NODE_NAME: node1
ports:
- "5432:5432"
networks:
database:
aliases:
- database
Run Code Online (Sandbox Code Playgroud)
docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------
appname_app_1 /bin/sh -c /app/start.sh Up 0.0.0.0:8060->80/tcp
appname_appdb_1 docker-entrypoint.sh /usr/ ... Up 22/tcp, 0.0.0.0:5432->5432/tcp
Run Code Online (Sandbox Code Playgroud)
从容器我可以成功连接.来自app容器和db容器.
在容器内运行psql的dbs和用户列表:
# psql -U postgres
psql (9.5.13)
Type …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 DBeaver 访问 postgresql docker 容器,但我不知道如何使其工作。
运行docker port db_1返回:
5432/tcp -> 0.0.0.0:5432
Run Code Online (Sandbox Code Playgroud)
所以端口应该对连接开放。
该postgresql.conf设置为
listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)
运行docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' db_1返回
172.19.0.2
Run Code Online (Sandbox Code Playgroud)
当试图连接到数据库,要么localhost/ 127.0.0.1/ 172.19.0.2/db_1该Dbeaver日志返回此:
2019-03-18 17:22:03.000 - Connect with 'jdbc:postgresql://db_1:5432/test' (postgres-jdbc-169919c23d5-77ac021a71307fee)
....
2019-03-18 17:22:14.815 - SSH INFO: SSH_MSG_SERVICE_ACCEPT received
2019-03-18 17:22:14.824 - SSH INFO: Authentications that can continue: password,keyboard-interactive
2019-03-18 17:22:14.825 - SSH INFO: Next authentication method: password
2019-03-18 17:22:18.432 - SSH INFO: Authentication succeeded …Run Code Online (Sandbox Code Playgroud)