2017-12-20 7 views
0

私はファイルを開いて特定のデータを抽出するPythonコードを持っています。以下はそのコードです:FileNotFoundError in custon docker python image

def get_mode(first, last): 
    with open('/srv/config/mode.conf','r') as f: 
     for line in f: 
      if line.startswith(first): 
       try: 
        start = line.index(first) + len(first) 
        end = line.index(last, start) 
        return line[start:end] 
       except ValueError: 
        return "Default Mode" 

これは、pythonコードを実行するとうまくいきます。しかし、私は、コマンドの下に使用してドッキングウィンドウのイメージにそれを変換しているように、ドッキングウィンドウとしてそれを実行したい:上記のコマンド

sudo docker build -t mydocker . 

が正常にドッキングウィンドウの画像の中にPythonコードを変換します。それから私は

sudo docker run -it mydocker 

を使用してイメージを実行しますが、それはエラーを与える:

Traceback (most recent call last): 
    File "./my_script.py", line 68, in <module> 
    main() 
    File "./my_script.py", line 52, in main 
    mode = get_mode("user "," :") 
    File "./my_script.py", line 15, in get_publish_string 
    with open('/srv/config/mode.conf','r') as f: 
FileNotFoundError: [Errno 2] No such file or directory: '/srv/config/mode.conf' 

Pythonのコードがうまく実行されている場合、なぜドッキングウィンドウの画像がエラーを与えている可能性があることである方法。 DOCKERFILE OF

CONTENT:

FROM python:3 

ADD my_script.py/

ADD mode.conf /srv/config 

RUN pip3 install psutil 

CMD [ "python3", "./my_script.py" ] 
+0

Dockerfileの内容を投稿してください。ドッカーのコンテナ内に設定ファイルを追加するか、そうでなければマウントする必要があります。自動的には利用できません:) – favoretti

+0

@favoretti Dockerfileの内容を追加しました。あなたはDockerfileの中にその設定ファイルを記述する方法を教えてください。ありがとう。 –

答えて

1

あなたは同様にあなたのイメージに設定ファイルを追加する必要があります。

RUN mkdir -p /srv/config 
ADD mode.conf /srv/config 

などです。

+0

これは、 'ADDが失敗しました:stat /var/lib/docker/tmp/docker-builder771094008/mode.conf:そのようなファイルやディレクトリはありません.' –

+0

Dockerfileの内容で私の質問を更新しました –

+0

あなたのmode.confはドッカーファイルと同じディレクトリですか?また、ディレクトリが存在しない場合にmkdirを含めるように答えを修正しました。 – Hannu