如何在 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.
仅当您遇到路由问题时才需要网络部分。
我制作了一个 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.
仅当您遇到路由问题时才需要网络部分。