CockroachDB Docker 使用 SQL 命令编写脚本
CockroachDB Docker Compose Script with SQL commands
我想完成两件事:
1) 使用 docker compose (works)
启动 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-撰写时,一切都按预期进行。
在使用 google 时,我发现解决方案是 运行 一个 bash 脚本,我创建了以下 setup.sh:
sql --insecure --execute="CREATE TABLE testDB"
我试图通过命令 运行 脚本:bash -c "setup.sh",但是 Docker 说它不能 运行 命令 "bash"。
有什么建议么 ?谢谢 :)
编辑:
我正在运行宁docker-整理,我得到的错误:
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:
我想完成两件事:
1) 使用 docker compose (works)
启动 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-撰写时,一切都按预期进行。 在使用 google 时,我发现解决方案是 运行 一个 bash 脚本,我创建了以下 setup.sh:
sql --insecure --execute="CREATE TABLE testDB"
我试图通过命令 运行 脚本:bash -c "setup.sh",但是 Docker 说它不能 运行 命令 "bash"。 有什么建议么 ?谢谢 :)
编辑:
我正在运行宁docker-整理,我得到的错误:
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: