python - 如何在 Web 应用程序的 Docker 镜像中安装并启动 CouchDB 服务器?

标签 python docker server couchdb

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

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 解决了这个问题用于运行单独的 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 子网中,可以通过 Python 容器中的 http://couchServer:5984 访问 CouchDB。为了确保重新启动容器时 CouchDB 不会丢失,它被保存在单独的 Docker 卷 couchdb_data 中。 使用环境变量 DOCKER_VOLUMES_BASEPATH 确定 CouchDB 日志记录在哪个目录中。它可以在 .env-file 中定义。 .

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

关于python - 如何在 Web 应用程序的 Docker 镜像中安装并启动 CouchDB 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50803382/

相关文章:

Python 错误 : "cannot find path specified"

python - 你如何在 Python 中进行 UDP 多播?

python - 从 Python 中的包装函数获取上下文对象

docker - 带有 k8s pv : Error opening query log file"file=/prometheus/queries. active err="open/prometheus/queries.active: permission denied"的普罗米修斯

apache - 重定向加载到 http 而不是 https

python - 在 Tensorflow 中如何卡住保存的模型

java - 从昨天起就无法在 Dockerfile 上运行 Java

linux - docker 能否解决 C 共享库不匹配的问题?

linux - Salt cmd.run 以不显示服务器名称

node.js - 无法使用 Socket.io 启动 NodeJS 服务器