2017-05-26 17 views
1

dockerを使用してコンテナ内でmysqlサービスを開始しています。コンテナの開始後、私はPythonスクリプトを介して自動的にデータベースにデータを挿入したいと思います。これは私のDockerfileです:dockerコンテナでmysqlを起動した後にデータを挿入

FROM mysql:5.7 

EXPOSE 3306 

ENV MYSQL_ROOT_PASSWORD 123456 

WORKDIR /app 
ADD . /app 

RUN apt-get update \ 
    && apt-get install -y python3 \ 
    && apt-get install -y python3-pip 
RUN pip3 install --user -r requirements.txt 
RUN python3 init.py 

最後の行は、データベースにいくつかのデータを追加するためのスクリプトを実行しますが、docker buildを実行するときに、それが失敗したので、今回のMySQLサービスはまだ開始されていません。これをどのように達成するのですか?前もって感謝します。

答えて

1

According to the docs、MySQLのエントリポイントが自動的に/docker-entrypoint-initdb.dで見つかった.sh.gzまたは.sqlスクリプトで任意のファイルを実行します。ですから、Pythonスクリプトを実行するためのスクリプトを作成してください。あなたはこのファイル01-my-script.shを呼び出す場合は、あなたのDockerfileは次のようになります。

FROM mysql:5.7 

EXPOSE 3306 
ENV MYSQL_ROOT_PASSWORD 123456 
WORKDIR /app 

RUN apt-get update && apt-get install -y \ 
    python3 \ 
    python3-pip 

# Copy requirements in first, and run them (so cache won't be invalidated) 
COPY ./requirements.txt ./requirements.txt 
RUN pip3 install --user -r requirements.txt 

# Copy SQL Fixture 
COPY ./01-my-script.sh /docker-entrypoint-initdb.d/01-my-script.sh 
RUN chmod +x /docker-entrypoint-initdb.d/01-my-script.sh 

# Copy the rest of your project 
COPY . . 

そして、あなたのスクリプトのみが含まれます:

#!/bin/sh 

python3 /app/init.py 

を今、あなたはあなたのコンテナを起動するとき、あなたのスクリプトが実行されます。実行中のコンテナの実行をdocker logs -f <container_name>で監視して、スクリプトが実行中であることを確認します。

+0

ありがとうございました。それは私の問題を解決する! –

関連する問題