2017-08-25 155 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: