如何在 Web 应用程序的 Docker 映像中安装和启动 CouchDB 服务器?

How to install and start CouchDB server in a Docker image of a Web Application?

我制作了一个 Docker 构建在 Python 上的 Web 应用程序图像,我的 Web 应用程序需要在 运行 启动该程序之前启动 CouchDB 服务器。谁能告诉我如何在此 Web 应用程序的 Docker 文件中安装和 运行 CouchDB 服务器。我的 Docker 文件如下:

FROM python:2.7.15-alpine3.7
RUN mkdir /home/WebDocker
ADD ./Webpage1 /home/WebDocker/Webpage1
ADD ./requirements.txt /home/WebDocker/requirements.txt

WORKDIR /home/WebDocker

RUN pip install -r /home/WebDocker/requirements.txt
RUN apk update && \
        apk upgrade && \^M
        apk add bash vim sudo
EXPOSE 8080
ENTRYPOINT ["/bin/bash"]

欢迎来到 SO!我通过使用 Docker-Compose for running a separate CouchDB Container 和一个单独的 Python 容器解决了它。配置文件的相关部分 docker-compose.yml 如下所示:

# This help to avoid routing conflict within virtual machines:
networks:
  default:
    ipam:
      driver: default
      config:
        - subnet: 192.168.112.0/24


# The CouchDB data is kept in docker volume:
volumes:
  couchdb_data:


services:
 # The container couchServer uses Dockerfile from the subdirectory CouchDB-DIR 
 # and it has the hostname 'couchServer':
  couchServer:
    build:
      context: .
      dockerfile: CouchDB-DIR/Dockerfile
    ports:
      - "5984:5984"
    volumes:
      - type: volume
        source: couchdb_data
        target: /opt/couchdb/data
        read_only: False 
      - type: volume
        source: ${DOCKER_VOLUMES_BASEPATH}/couchdb_log
        target: /var/log/couchdb
        read_only: False
    tty: true
    environment:
      - COUCHDB_PASSWORD=__secret__
      - COUCHDB_USER=admin
  python_app:
    build:
      context: .
      dockerfile: ./Python_DIR/Dockerfile
...

在 Docker 子网中,http://couchServer:5984 可以从 Python 容器访问 CouchDB。为了确保 CouchDB 在重新启动容器时不丢失,它被保存在一个单独的 Docker 卷 couchdb_data 中。 使用环境变量 DOCKER_VOLUMES_BASEPATH 确定 CouchDB 记录在哪个目录中。可以定义在.env-file.

仅当您遇到路由问题时才需要网络部分。