gpt4 book ai didi

bash - CockroachDB Docker 使用 SQL 命令编写脚本

转载 作者:行者123 更新时间:2023-11-29 09:00:05 25 4
gpt4 key购买 nike

我想完成两件事:

1) 使用 docker compose 启动一个 CockroachDB 集群(有效)

2)在集群上执行SQL命令(我要创建一个数据库)

我的 Docker 文件如下所示:

version: '3'

services:
roach-ui:
image: cockroachdb/cockroach
command: start --insecure
expose:
- "8080"
- "26257"
ports:
- "26257:26257"
- "8080:8080"
networks:
- roachnet
db-1:
image: cockroachdb/cockroach
command: start --insecure --join=roach-ui
networks:
- roachnet
volumes:
- ./data/db-1:/cockroach/cockroach-data

networks:
roachnet:

当我运行 docker-compose up 时,一切都按预期进行。在使用谷歌时,我发现解决方案是运行一个 bash 脚本,我创建了以下 setup.sh:

sql --insecure --execute="CREATE TABLE testDB"

我尝试通过命令运行脚本:bash -c "setup.sh",但 Docker 说它无法运行命令 "bash"。有什么建议 ?谢谢 :)

编辑:

我正在运行 docker-compose up,出现错误:

roach-ui_1  | Failed running "bash"
heimdall_roach-ui_1 exited with code 1

最佳答案

所以你需要一个额外的初始化服务来初始化数据库。该服务将运行一个 bash 脚本来执行初始化数据库的命令

setup_db.sh

#!/bin/bash
echo Wait for servers to be up
sleep 10

HOSTPARAMS="--host db-1 --insecure"
SQL="/cockroach/cockroach.sh sql $HOSTPARAMS"

$SQL -e "CREATE DATABASE tarun;"
$SQL -d tarun -e "CREATE TABLE articles(name VARCHAR);"

然后在 docker-compose.yml

中添加要执行的文件

docker-compose.yaml

version: '3'

services:
roach-ui:
image: cockroachdb/cockroach
command: start --insecure
expose:
- "8080"
- "26257"
ports:
- "26257:26257"
- "8080:8080"
networks:
- roachnet
db-1:
image: cockroachdb/cockroach
command: start --insecure --join=roach-ui
networks:
- roachnet
volumes:
- ./data/db-1:/cockroach/cockroach-data
db-init:
image: cockroachdb/cockroach
networks:
- roachnet
volumes:
- ./setup_db.sh:/setup_db.sh
entrypoint: "/bin/bash"
command: /setup_db.sh
networks:
roachnet:

关于bash - CockroachDB Docker 使用 SQL 命令编写脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com