2017-08-25 153 views
0

我想完成两件事情:CockroachDB泊坞窗撰写脚本和SQL命令

1)先从泊坞窗撰写(作品CockroachDB集群)

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

我泊坞文件看起来像这样:

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: 

当我跑码头工人,组成了,一切正常。 虽然使用谷歌,我发现,解决方案是运行bash脚本,我创建了以下setup.sh:

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

我试图通过命令来运行脚本:bash的-c“setup.sh”,但是Docker说它不能运行命令“bash”。 有何建议?谢谢:)

编辑:

我正在码头工人,组成了,错误我得到:

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

你介意复制并粘贴指定你正在运行的Docker命令以及你遇到的错误信息? –

回答

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

泊坞窗,撰写执行.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: