2017-08-25 13 views
0

コマンド私は2つのことを達成したいと思います:CockroachDBドッカー作曲スクリプト

1)(作品)

2)は、クラスタ上のSQLコマンドを実行するドッキングウィンドウのコンでCockroachDBクラスタを起動し、私がしたいです(

マイドッカーファイルは次のようになります)データベースを作成します。

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"を実行できないと言います。 提案がありますか?感謝:)

EDIT:

私がドッキングウィンドウは、構成する実行していますが、私は取得していますエラー:

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

あなたはコピーして貼り付けても構いませんc Dockerコマンドを実行中で、エラーメッセージが表示されますか? –

答えて

1

だから何が必要DBを初期化するための余分のinitサービスです。このサービスは、DB

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);" 

をinitと、あなたがdocker-compose.yml

ドッキングウィンドウ・コンで実行するために、このファイルを追加するコマンドを実行するbashスクリプトを実行します.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: 
関連する問題