2

私はこのアプリを docker + fig を使用してオーケストレーションしようとしています。これは、試行の初日にうまく機能します。データベースファイルを永続化したいデータコンテナと、アプリで使用されるredis + mysqlコンテナを使用します。

mysql コンテナーを起動する/var/lib/mysqlと、内部でデータ ファイルが検索され、何も見つからない場合は、デフォルトの sb が作成されます。これを入力すると、ファイルが作成され、データ ボリュームに永続化されます。

fig を学習している間fig rm --force mysql、mysql コンテナーを削除する必要がありました。データ コンテナー上でデータが安全であることを知っていれば、恐れることなくこれを実行できました。ホストで a を実行するlsと、mysql ファイルがそのまま表示されます。

再度実行すると問題が発生しfig up、mysql コンテナーが再度作成されます。同じボリュームを共有していて、古い mysql ファイルがまだ存在しているにもかかわらず、この新しいコンテナーは、共有ボリュームが空であるかのように新しいデータベースを作成します。これは、コンテナを閉じた場合にのみ発生し、rm図を閉じて元に戻した場合には発生しません。

それが役立つ場合、これが私の図ファイルです:

data: image: ubuntu:12.04 volumes: - /data/mysql:/var/lib/mysql redis: image: redis:latest mysql: image: mysql:latest ports: - 3306 environment: MYSQL_DATABASE: ***** MYSQL_ROOT_PASSWORD: ***** volumes_from: - data web: build: . dns: 8.8.8.8 command: python manage.py runserver 0.0.0.0:8000 environment: - DEBUG=True - PYTHONUNBUFFERED=1 volumes: - .:/code ports: - "8000:8000" links: - data - mysql - redis

新しい mysql コンテナが既存のファイルを使用しない理由はありますか?

4

2 に答える 2

0

私は使用していませんfigが、投稿の単純化された構文はかなり見栄えがするので、調べてみます。毎日、さらに数時間かけて Docker に関する知識を広げ、何が可能かについて脳を再配線しています。約 3 週間、MySQL インスタンス用のステートレス データ コンテナを実行しています。これは問題なくうまく機能しています。

コンテナの起動時に内部 のコンテンツ/var/lib/mysqlが存在しない場合は、スクリプトが必要なデータベース ファイルをインストールします。/var/lib/mysqlスクリプトは、パスだけでなく初期データベース ファイルが存在するかどうかを確認します。

if [[ ! -f $VOLUME_HOME/ibdata1 ]]; then
    echo "=> An empty or uninitialized MySQL volume is detected in $VOLUME_HOME"
    echo "=> Installing MySQL ..."

else
    echo "=> Using an existing volume of MySQL"
fi

これは、私が強化し続けているMySQLレポへの直接リンクです

于 2014-12-24T08:29:07.897 に答える