CouchDB未在Docker映像上运行

时间:2019-09-18 09:38:58

标签: docker docker-compose dockerfile

我正在尝试学习服务器端敏捷性,并成功通过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

2 个答案:

答案 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

bind_address

定义可访问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