2017-01-11 18 views
-2

IセットアップドッカーとDjangoプロジェクト、その得た二つの容器、djangoサーバーごとに1つ、postgresサーバーごとに1つ。私は、このプロジェクトのためにbashスクリプトやperlスクリプトを実行するようなこともできるようにしたいと考えています。例えば、bashスクリプトを使ってデータベースのダンプをライブサイトから自動的にダウンロードして復元する必要があります。各bashスクリプトに新しいDockerイメージをセットアップしますか?あるいは、私はUbuntuのコンテナをセットアップし、それを使ってbashスクリプトを実行する必要がありますか? ドッカー - Windowsホスト上のbashスクリプトの実行

相続人Dockerfile

FROM python:3.5 

ENV PYTHONBUFFERED 1 
ENV APPLICATION_ROOT /app/ 
ENV APP_ENVIRONMENT L 
COMPOSE_CONVERT_WINDOWS_PATHS=1 

RUN mkdir -p $APPLICATION_ROOT 
WORKDIR $APPLICATION_ROOT 
ADD requirements.txt $APPLICATION_ROOT 
RUN pip install --upgrade pip 
RUN pip install -r requirements.txt 
ADD . $APPLICATION_ROOT 

とドッキングウィンドウ-コンファイル:

web: 
    build: . 
    command: python manage.py runserver 0.0.0.0:8000 
    volumes: 
     - .:/app 
    ports: 
     - "8998:8998" 
    links: 
     - db 

db: 
    image: postgres:9.4 
    environment: 
     APP_ENVIRONMENT: L 
     POSTGRES_USER: postgres 
     POSTGRES_PASSWORD: root 
     POSTGRES_DB: mydb 

私はまだ物事を行うに最善のアプローチを知らないドッカーに新たなんです。私はbashスクリプトと新しいドッカーファイルをどこに置くべきですか?また、プロジェクトが実行されているときにいつでもスクリプトを実行できるように、私はこのプロジェクトにどのようにリンクしますか? Theres私はこれを行うことができますいくつかの方法は、私はちょうどbashのコンテナを作成し、スクリプトを実行するために使用することができます。あるいは私が必要とするすべてのスクリプトを保持するbashイメージ上にコンテナを作ることもできますし、それぞれのコンテナを作ることもできます。その場合、私はちょうど容器にこれらのそれぞれの画像をインポートしますので、私は、これらのbashスクリプトと一緒にperlまたはawkまたはexpectを実行する必要があるかもしれませんか?

答えて

1

あなたは間違っていくつかの概念を持っている:

  1. あなたが唯一のコンテナごとに1枚の画像をロードします。コンテナはそのイメージのインスタンスを実行します。コンテナは、含まれている仮想マシンと考えてください。イメージはOSとして考えてください。
  2. スクリプトごとに1つのコンテナは必要ありません。コンテナが含まれています。そのうちの1つでスクリプトを実行すると、別のコンテナには影響しません。あなたはもちろん、多くのubuntuイメージを持つことができますが、あなたがしたいことには意味がありません。コンテナをタスク(データベースの実行、Webページのホストなど)を実行する必要のあるサービスと考えてください。それは働くために必要なすべてを内部に持っていなければなりません。
  3. コンテナでスクリプトを実行する必要がある場合は、最初にDockerfileでADDまたはCOPYを使用し、次にCMDを使用してスクリプトを実行する必要があります。それはコンテナ内で実行されるため、その状態に影響します。これらのコマンドの使用方法の詳細については、Dockerfile referenceを参照してください。また
+0

、あなたは全体のコンテナのアーキテクチャを理解するいくつかのトラブルを持っているように見えることから、私がget-開始ドキュメントを見てみお勧めしたいです。 –

関連する問題