我制作了一个基于 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/