我正在练习制作一个与PostgreSQL数据库交互的Golang Web应用程序,每个应用程序都在各自的容器上运行。
我正在运行容器 docker-compose up
但是我似乎无法正确设置postgres容器。
为简便起见,指向Dockerfile
s和其他设置文件的链接位于此要点上(如果您需要在此处,请告诉我)。
version: '2'
services:
web_app:
build: dockerfiles/web_app
ports:
- "9000:9000"
volumes:
- .:/go/src/gitlab.com/repo/web_app
# links might be replaced by depends_on.
# links:
# - db
depends_on:
- db
# tty and stdin_open cause docker-compose to disconnect from docker-machine after 60sec.
# A fix is on the way.
# tty: true
# stdin_open: true
db:
build: dockerfiles/db
volumes:
- data:/var/lib/postgresql/data
volumes:
data: {}
docker-compose up
工作良好。但是,当应用程序尝试使用以下方法打开数据库连接时:
var pgConf string = "user=web_app dbname=web_app sslmode=verify-full password=password"
db, err := sql.Open("postgres", pgConf)
我从docker compose得到以下错误:
Error creating new user: dial tcp [::1]:5432: getsockopt: connection refused
如何使两个容器相互通信?
先感谢您。
使用docker-compose v2时,不需要在服务之间创建链接。Docker 1.9和1.10允许您通过它们的名称连接到同一(自定义)网络上的其他容器。
您应该能够使用 服务 名称或 容器 名称作为主机名进行连接。鉴于容器的名称是由docker-
compose生成的,因此使用起来并不方便,因此,docker-compose还会为每个容器添加一个带有服务名称的 别名 。
举这个非常简单的例子。为了方便起见,我使用了Nginx容器,但同样适用于您的情况;
version: '2'
services:
web_app:
image: nginx
db:
image: nginx
首先启动项目(假设;
$ docker-compose --project-name=test up -d
Creating network "test_default" with the default driver
Creating test_db_1
Creating test_web_app_1
然后从test_web_app_1
容器内部ping“ db”服务:
$ docker exec -it test_web_app_1 ping -c 2 db
PING db (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.108 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.243 ms
--- db ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.108/0.175/0.243/0.068 ms
如果检查test_db_1
容器,则可以看到docker-compose自动为test_db_1
容器添加了“ db”别名;
$ docker inspect test_db_1
给:(只是NetworkSettings.Networks
一部分)
"Networks": {
"test_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"db",
"002b1875e61f"
],
"NetworkID": "0f9e2cddeca79e5a46c08294ed61dee273828607f99014f6410bda887626be70",
"EndpointID": "a941ab95586a8fdafc5075f9c5c44d745f974e5790ef6048b9e90115a22fb31f",
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:12:00:02"
}
}
喂,伙计们! 这是我的第一次,所以我会尽力做到最好。 我想创建一个应用程序,它是运行与Springboot框架,我想把它连接到一个docker容器嵌入MySQL(但Spring启动应用程序不是运行在docker) 所以我一直关注这个帖子 我已经做了我的docker-comact: 我用这个命令运行它: 一切都很好,所以现在我在Spring靴上改变application.properties: 但当
我有一个Java应用程序在Docker容器中运行,在另一个容器中运行。 如何连接容器以在Java应用程序中使用<code>rabbitmq</code>?
我无法将作为docker容器运行的应用程序连接到mongoDB。我知道新版本docker compose不推荐使用“链接”,所以我尝试使用自定义网络。我的码头工人。yml: 我的应用程序的Dockerfile: 当我运行时,我在应用程序中得到以下错误消息: 在第一次连接时连接到服务器[127.0.0.1:27017]失败[MongoNetworkError:连接ECONNREFUSED127.0.
从我的spring-boot应用程序容器连接到Rabbitmq时,我遇到了一个错误。 我在docker compose文件中附加了两个docker容器(Rabbitmq和spring-boot应用程序)和网桥网络: 当我的Spring Boot应用程序尝试连接到后者时,Rabbitmq拒绝了连接。日志下方: 当我在我的spring boot应用程序容器(在我的例子中是orchestrator)中执
问题内容: 我在将作为docker容器运行的nodeJS应用程序连接到mongoDB时遇到问题。让我解释一下到目前为止我做了什么: 如您所见,已经有一个mongo docker容器正在运行。 现在我正在运行我的nodeJS应用程序docker容器(这是来自meteorJS的构建): 在这个Docker容器中,我想通过运行以下命令来运行应用程序: 现在我得到了错误 我已经尝试通过设置以下内容来设置M
我花了几个小时在谷歌上搜索,但似乎找不到正确的路径/文档来帮助我走上正确的道路:( 前提很简单。 我有一个在localhost:8080上打开的springboot应用程序。我有一个在localhost:15672上打开的rabbitmq服务器 当这两个应用程序都运行时,springboot应用程序将通过一些用户交互向Rabbitmq服务器发送消息。当我对这两个独立的服务进行dockerize(容