私は、開発者のプロセスをドッカーを使用して簡単にしたりメンテナンスしたりしようとしています(-compose)。 ボリュームを使用したくない場合(可能な場合) 'docker-compose up -d'を実行した後にimport.shが実行されないのはなぜですか?ドッカーの作成後にスクリプトを実行する方法は?
私は、次のファイルがありますがあり/mysqlの/ Dockerfileに
version: '2'
services:
database:
image: mysql
build:
context: ./mysql/
dockerfile: Dockerfile
container_name: mysqltest
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456
:
ADD import.sh /tmp/import.sh
ADD db.sql /tmp/db.sql
RUN /tmp/import.sh
あり
ドッキングウィンドウ-compose.ymlで
docker-compose.yml
mysql
---- import.sh
---- db.sql
---- Dockerfile
を
in /mysql/db.sqlがあります:
CREATE DATABASE test1;
CREATE DATABASE test2;
CREATE DATABASE test3;
画像が_built_のときにDockerファイルが実行されます。 Docker Composeは、実行する前に画像を作成します。だからあなたのスクリプトは_after_ではなく、 'docker-compose up -d'を実行する前に実行していなければなりません。 – mkasberg
mysqlデーモンが起動してからデータベースダンプを実行したいと思うようです。その場合は、[MySQL Dockerhub Page](https://hub.docker.com/_/mysql/)で文書化されている '/ docker-entrypoint-initdb.d'を使用し、ここで説明します:http:// stackoverflow .com/questions/36781984/load-postgres-dump-after-docker-compose-up/36782751#36782751(PostgresとMySQLで同じ機能をします) – mkasberg
はい、それは私が達成したいものです。それは私のために働いてくれました。ありがとうございます。しかし、ビルドプロセスの後、またはすべてのコンテナが準備完了した後に、他のスクリプトを実行したい場合はどうすればよいでしょうか? – p0rter