我正在尝试学习服务器端敏捷性,并成功通过Heroku作为Docker容器进行了部署,但是在将其与ouchdb一起使用时,我一直在努力使我的数据库正常工作。该数据库在本地运行良好,但我似乎无法使其在Docker容器中运行。
我当前的Dockerfile
如下:
FROM ibmcom/swift-ubuntu:5.0.2
WORKDIR /ServerSideSwift
COPY . .
RUN swift build -c release
CMD .build/release/ServerSideSwift
因此要向其中添加沙发床,我试图创建一个看起来像这样的docker-compose.yml
:
version: "3.7"
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
links:
- db
db:
image: couchdb
ports:
- "5984:5984"
构建映像工作正常并且运行也很好,但是当它尝试创建一个新数据库时(在swift中),我得到了我在swift代码中输入的错误,该错误表明长沙发没有运行,因此无法创建任何新数据库。 / p>
谁能看到我要去哪里错了?
更新3:我当前的docker-compose.yml
:
version: "3.7"
networks:
app-net:
driver: bridge
services:
app:
build: .
ports:
- "8080:8080"
networks:
- app-net
db:
image: couchdb
ports:
- "5984:5984"
environment:
COUCHDB_USER: Test
COUCHDB_PASSWORD: test
networks:
- app-net
答案 0 :(得分:2)
首先,将连接字符串从“ localhost”更改为“ DB”以使用Docker DNS。然后将连接参数更改为不使用加密。
答案 1 :(得分:0)
默认情况下,在本地主机上可以访问CouchDB 在容器中,因为您正在使用docker。
您可以在CouchDB容器中尝试 exec 并运行 curl localhost:5984 ,它应该可以正常工作。
如果要允许某些IP连接到CouchDB服务器,则应使用bind_address config_docs。
要允许所有IP使用 local.ini 中的 bind_address = 0.0.0.0 。
定义可访问CouchDB的IP地址。
[httpd]
bind_address = 127.0.0.1
要让CouchDB监听任何可用的IP地址,只需设置0.0.0.0值:
[httpd]
bind_address = 0.0.0.0
将此配置添加到您的自定义 local.ini 文件中,并将其安装在此路径 / opt / couchdb / etc / 中的长沙发容器中。
version: "3.7"
networks:
app-net:
driver: bridge
services:
app:
build: .
ports:
- "8080:8080"
networks:
- app-net
db:
image: couchdb
ports:
- "5984:5984"
environment:
COUCHDB_USER: Test
COUCHDB_PASSWORD: test
volumes:
- path_to_local.ini:/opt/couchdb/etc/
networks:
- app-net