如何从docker-compose.yml运行命令来启动couchdb



我有一个用django编写的Web应用程序,我需要与couchdb连接,两者都在docker容器上运行。django将数据存储在名为"的couchdb表中;测试";。所以我需要创建";测试";沙发数据库中的桌子。但我不知道如何做到这一点,因为没有好的材料可供参考。我已经尝试了以下代码,但由于couchdb没有启动和运行,它引发了以下错误。有没有任何方法可以使用docker-compose.yml或任何其他替代方法在couchdb中创建一个表。

我使用docker-compose up运行容器

docker-compose.yml

version: '3'
services:
web:
build: .
command: python ./webapp/server.py
volumes:
- .:/code
- ./webapp/static:/static
networks:
- couchserver_network
depends_on:
- couchserver
couchserver:
image: couchdb
ports:
- "5984:5984"
command: curl -u rob:123456 -X PUT localhost:5984/_users && curl -u rob:123456 -X PUT localhost:5984/test
environment:
- COUCHDB_USER=rob
- COUCHDB_PASSWORD=123456
volumes:
- ./dbdata:/opt/couchdb/data
networks:
- couchserver_network

networks:
couchserver_network:
driver: bridge

引发错误:

0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (7) Failed to connect to localhost port 5984: Connection refused

如果我去掉行">命令:curl-u rob:123456-X PUT localhost:5984/users&curl-u-rob:123456-X PUT localhost:5984/test";引发以下错误:

couchserver_1  | {database_does_not_exist,[{mem3_shards,load_shards_from_db,"_users",[{file,"src/mem3_shards.erl"},{line,399}]},.... 

这是我的Dockerfile:

FROM python:3.6-slim-buster
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

非常感谢任何形式的帮助

还有一个查询:下面几行是干什么的。我是docker的新手,这是我第一次接触

volumes:
- ./dbdata:/opt/couchdb/data

compose文件中使用的command覆盖启动数据库的Dockerfile中的CMD。

首先要考虑的是重写CMD,以便启动DBAND执行卷曲,但由于数据库的初始化方式,这将不起作用。

一个更好的方法是使用一个助手容器来对DB执行curl命令。

下面是一个创建所需数据库的最小示例:

version: '3'
services:
couchserver:
image: couchdb
ports:
- "5984:5984"
environment:
- COUCHDB_USER=rob
- COUCHDB_PASSWORD=123456
volumes:
- ./dbdata:/opt/couchdb/data
initializer:
image: curlimages/curl
deploy:
restart_policy:
condition: on-failure
depends_on:
- couchserver
command: ["sh","-c","sleep 15 && curl -u rob:123456 -X PUT couchserver:5984/_users &&  curl -u rob:123456 -X PUT couchserver:5984/test"]

最新更新