2017-12-15 14 views
0

私はドッカー画像を作成するためのPythonコードを持っています。今私の理解によれば、Dockerfileと私たちのpythonコードcode.pyが必要です。 Dockerfile内では記述する必要があります。カスタムのPythonドッカー画像の作成

FROM python:3 

ADD code.py/

RUN pip3 install imapclient 

CMD [ "python", "./code.py" ] 

私の最初の質問は、このDockerfileについてです。まず、を使いたいので、FROM python:3を挙げました。次にコードを追加しました。 RUNでは、私たちのコードの依存関係を書くことができます。たとえば、コードにpythonパッケージimapclientが必要な場合は、ここで言及して、ドッカーファイルがビルドされる前にインストールされるようにします。しかし、私たちのコードに要件がない場合はどうでしょうか? この行は重要ですかRUNです。必要がないときに除外することはできますか?

これで、コマンドdocker build -t python-hello-world .を使用して最終的にドッカー画像python-hello-worldを作成したとします。コマンドdocker images -aを使って見ることができます。今ではdocker psを実行すると、コンテナが実行されていないため、そこには表示されません。今それを始めるには、私はdocker run python-hello-worldをしなければならないでしょう。これでコードが開始されます。しかし、私はそれがLinuxサービスのように常にバックグラウンドで実行されることを望んでいます。どうやってするか。?

答えて

1

この行は重要ですか?それを必要としないときに除外することはできますか?

はい、コードにパッケージが必要ない場合は除外できます。

しかし、私はそれがLinuxのサービスのようなバックグラウンドで常に実行されることを望みます。どうやってするか?

バックグラウンドで実行する場合は、以下のコマンドを使用します。

docker run -d --restart=always python-hello-world 

これはバックグラウンドでコンテナを起動し、システムの再起動時に自動的に起動します。

+0

私は実際に '--restart'フラグを使用しましたが、-dを使用しなかったのでエラーになりました。まあありがとう。もう1つの質問です.Dockerビルドコマンドを使用すると、最後に '.'を使用する理由は –

+0

です。 linuxの現在のディレクトリ、dockerビルドをreferesします。現在のディレクトリにあるdockerfileを使用していることを意味します。 –

+0

そして、別のディレクトリからコマンドを実行している場合は、 '.'の代わりにpathを指定する必要があります。 –

関連する問題