図を使用して、リンクされたドッカーコンテナーのセットのインストールと実行を自動化しようとしています。構成は、MySQL を実行するコンテナーにリンクされた RStudio を実行するコンテナーで構成されているため、RStudio から MySQL データベースにクエリを実行できます。
最初の実行で、ベースの MySQL イメージから MySQL コンテナを作成し、それにユーザーとデータベースを設定したいと思います。コマンドラインから、次のようにします。
#Get the latest database file
wget -P /tmp http://ergast.com/downloads/f1db.sql.gz && gunzip -f /tmp/f1db.sql.gz
#Create the database container with user, password and database
docker run --name ergastdb -e MYSQL_USER=ergast -e MYSQL_ROOT_PASSWORD=mrd -e MYSQL_DATABASE=f1db -d mysql
#Populate the database
docker run -it --link=ergastdb:mysql -v /tmp:/tmp/import --rm mysql sh -c 'exec mysql -h$MYSQL_PORT_3306_TCP_ADDR -P$MYSQL_PORT_3306_TCP_PORT -uergast -pmrd f1db < /tmp/import/f1db.sql'
#Fire up RStudio and link to the MySQL db
docker run --name f1djd -p 8788:8787 --link ergastdb:db -d rocker/hadleyverse
データがプリロードされたデータベース イメージを取得できた場合、次の fig.yml スクリプトのようなものが要素をリンクできると思いますか?
gdrive:
command: echo created
image: busybox
volumes:
- "~/Google Drive/shareddata:/gdrive"
dbdata:
image: mysql_preloaded
environment:
MYSQL_USER=ergast
MYSQL_ROOT_PASSWORD=mrd
MYSQL_DATABASE=f1db
rstudio:
image: rocker/hadleyverse
links:
- dbdata:db
ports:
- "8788:8787"
volumes_from:
- gdrive
私の質問は、ワンショットの fig ステップを使用してdbdata
コンテナーを作成し、おそらく永続ボリュームをマウントし、それにリンクして、おそらく初期の一部としてデータベースを初期化できるかということfig up
です。その後、コンテナーを開始および停止した場合、データベースの初期化ステップを再度実行したくありません。以前にインストールしたデータを含むデータ ボリューム コンテナーにリンクするだけです。
datadir
また、MySQL docker イメージが任意の定義をサポートしているように見えることにも気付きました(エントリポイントを更新して、 /var/lib/docker を想定する代わりに、MySQL 構成から直接 DATADIR を読み取ります)。私が理解しているように、MySQL イメージの現在の定義では、データベース コンテナー内のデータベース コンテンツのマウント (したがって永続化) が妨げられています。これでイメージを作成できるようになるかもしれませmysql_preloaded
んが、最新バージョンの MySQL docker スクリプトがまだ dockerhub にプッシュされていないと思います。この代替経路を利用しますか?