ドッキング・コンテナ内のCassandraデータベースを初期化できません。私はdocker build . -t cassandra
を行うと、私はcqlsh
でエラーが発生しますドッキング・コンテナから実行するとcqlshが失敗する
FROM cassandra
COPY ./createTable.cql /tmp/createTable.cql
RUN cqlsh -f /tmp/createTable.cql
:
Connection error: ('Unable to connect to any servers', {'127.0.0.1': error(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})
しかし、私はドッカーコンテナの外にそれを行うときに、同じコマンドが正常に動作 は、ここに私のDockerfileです。 接続が拒否されるのはなぜですか?私が間違っている場合、 データベースをどのように初期化できますか?
ご協力いただきありがとうございます。
Dockerfileは公式のcassandra Dockerfile( 'FROM cassandra'を使用)を使用しているため、コンテナの中にカサンドラがあります。 Dockerfileからcqlshコマンドを削除して起動し、 'docker exec -it cassandraContainer cqlsh'を実行すると、 –
あなたは別のものを混在させています - コンテナをビルドしているときに' RUN'が実行されます - この時点で、このコンテナの内部でカサンドラが実行されていません...あなたのケースでは、カッサンドラはあなたがコンテナを開始するときに実行されていますが、これはコンテナが構築された後にのみ発生します。私の答えの2番目の部分は、正しく実装する方法を示唆しています - これは標準的なパターンです –
私はそれをありがとう、ありがとう。私はそれでカスタムスクリプトを作成しようとします。しかし、独自のパターンを作成するのが標準パターンであれば、公式のDockerfileはなぜ存在しますか?それはちょうどテンプレートとして使用するつもりですか? –