2017-08-01 9 views
0

私はPythonでいくつかのデータ処理を行うプロジェクトでDockerを使いたいと思っています。私のコードがcodeというディレクトリ(解析のステップごとに複数のpythonファイルで構成されています)とディレクトリdataの中にあるとしましょう。一つの解決策は、このようなコードやデータを追加することです:Docker Containerにローカルディレクトリをマウント

# Dockerfile 
FROM debian:stable-slim 
RUN apt-get update && apt-get install -y python-pip 
ADD code /code 
ADD data /data 
WORKDIR /code 
CMD python 

その後、私はcodeからのファイルのいずれかを実行するためにdocker run -i someName pythonFile1.pyを使用できます。しかし、ここで問題になっているのは、コードやデータを変更するたびにdocker build .を再実行する必要があるということです。

だから私はボリュームにdocker-composeを使用して、これらの2つのディレクトリを含めることを試みた:

#docker-compose.yml 
version: '2' 
services: 
    myProject: 
     build: . 
     volumes: 
      - ./code:/code 
      - ./data:/data 
# Dockerfile 
FROM debian:stable-slim 
RUN apt-get update && apt-get install -y python-pip 
WORKDIR /code 
CMD python 

今、私はそれを構築するためにdocker-compose buildを実行することができ、その後、私はちょうどdocker-compose run myProject pythonFile1.pyを行うことができると思ったが、その後私が手次のエラー:

ERROR: Cannot start service tools: oci runtime error: container_linux.go:262: starting container process caused "exec: \"pythonFile1.py\": executable file not found in $PATH" 

私が間違っているのか?ドッカーは、移動する方法を構成していますか(または、私は単純なDockerfileだけでも必要なものを達成することができますか)?ここ

答えて

1

はドッカー-COMPOSEランのドキュメントであり

run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...] 

pythonFile1.pyを実行するとき、ドッカーが存在していない容器内pythonFile1.pyコマンドを実行しようとしている従って、コマンドとして解釈されています。

あなたのケースでは、ドッカーの作成は必要ありません。

:あなたは、ホスト上のパスを引数とドッカー-構成
1

https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume 絶対する必要が

docker run -i someName -v /absolutePath/code:/code -v /absolute/data:/data pythonFile1.py 

メモは、Pythonコマンドを追加する必要がありますので、CMD
を避けるコマンドを使用することができます

docker-compose run myproject python pythonFile1.py 

Exp COMMANDは、あなたのCMDがあなたのDockerfileで定義し使用していないlanation

docker-compose run SERVICE COMMAND


CMDを使用せずにDockerファイルを作成することも、docker runと一緒に使用することもできます。

多分それはあなたがこのコマンドをしようとすると理解することは簡単です:

docker-compose run myproject ls . 

あなたがlspingpythonのように、あなたが好きなコマンドを使用することができますので、...

docker run \ 
     --rm \ 
     -it \ 
     --privileged \ 
     -v $(pwd):/home/dev/app \ 
     -w /home/dev/app \ 
     python:3 \ 
     python "[email protected]" 

は、その後、私は ln -S ./python-cli.sh /usr/local/bin/d-pythonとのリンクを行います。

Personnalyは、私は次のようになりますpython-cli.sh作成しました。
普通のpythonコマンドでd-pythonというコマンドを使用します:d-python myFile.py

関連する問題