2017-08-25 4 views
0

je voudrais accomplir 2 choses:CockroachDB Docker Script Compose avec des commandes SQL

1) Lancer un cluster CockroachDB avec Compose docker (travaux)

2) d'exécuter des commandes SQL sur le cluster (je veux créer une base de données)

Mon Docker fichier ressemble à ceci:

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: 

Quand je lance-docker composer up, tout fonctionne comme prévu. Tout en utilisant Google, je trouve que la solution est d'exécuter un script bash, j'ai créé le setup.sh suivant:

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

J'ai essayé d'exécuter le script via la commande: bash -c "setup.sh", mais Docker dit qu'il ne peut pas exécuter la commande "bash". Des suggestions? Merci :)

EDIT:

Je cours docker-Compose jusqu'à l'erreur j'obtiens:

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

Pourriez-vous copier et coller le spécifi c La commande Docker que vous exécutez et le message d'erreur que vous obtenez dans la question? –

Répondre

1

donc ce que vous avez besoin est un service d'initialisation supplémentaire pour initialiser le DB. Ce service exécutera un script bash pour exécuter des commandes qui DB initialiser le

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

Et puis vous ajoutez ce fichier à exécuter dans le 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: