2017-07-19 6 views
0

として異なるのpythonを使用して:ドッカーは、私はPythonアプリケーションとのドッキングウィンドウを使用する<a href="https://docs.docker.com/get-started/part3/" rel="nofollow noreferrer">Docker-getting started</a>のガイドを次のですが、ドッキングウィンドウは、コマンドに起き上がる際に、システム

docker run -p 80:80 username/repo:tag 

私は、次のエラーメッセージが出てい私はwhich flaskwhich python

/usr/local/bin/flask 
/usr/local/bin/python 
を実行したときに私が Flaskをインストールしている
Traceback (most recent call last): 
    File "app.py", line 1, in <module> 
    from flask import Flask 
ImportError: No module named flask 

が返されます。しかし、私がsudo pip install Flaskを実行すると、私は

Requirement already satisfied: flask in ./python2.7/site-packages 
Requirement already satisfied: click>=2.0 in ./python2.7/site- 
packages (from flask) 
Requirement already satisfied: Werkzeug>=0.7 in ./python2.7/site- 
packages (from flask) 
Requirement already satisfied: Jinja2>=2.4 in ./python2.7/site- 
packages (from flask) 
Requirement already satisfied: itsdangerous>=0.21 in 
./python2.7/site-packages (from flask) 
Requirement already satisfied: MarkupSafe>=0.23 in ./python2.7/site- 
packages (from Jinja2>=2.4->flask) 

と明らかに異なるディレクトリです。私の最初の考えは、私は2つの異なるディレクトリからPythonを使用しているので、これは私がドッカーコマンドを実行することができない理由です。しかし、私もnoobであり、トラブルシューティングを開始してこれを修正する方法を本当に知りません。誰かが私にここでいくつかの指針をくれば、とても感謝しています。事前に感謝します。ここで

EDIT pip install命令をラップする必要があるとあなたがWORKDIR前にADDを置きたいかもしれません私のDockerfile

# Use an official Python runtime as a parent image 
FROM python:2.7-slim 

# Set the working directory to /app 
WORKDIR /app 

# Copy the current directory contents into the container at /app 
ADD . /app 

# Install any needed packages specified in requirements.txt 
RUN pip install -r requirements.txt --proxy 
https://proxy:8080 --trusted-host pypi.python.org 

# Make port 80 available to the world outside this container 
EXPOSE 80 

# Define environment variable 
ENV NAME World 

# Run app.py when the container launches 
+0

しかし、あなたのドッカーのコンテナにpython/flask/etcをインストールしましたか? –

+0

@ A.Haaji、はい、私はコンテナ内からアプリを実行することができたのでしました。 –

+0

ドッカーファイルを提供してもらえますか? –

答えて

0

あり、また、あなたは正しいENTRYPOINT

を持っていないようです
# Use an official Python runtime as a parent image 
FROM python:2.7-slim 

# Copy the current directory contents into the container at /app 
ADD . /app 

# Set the working directory to /app 
WORKDIR /app 

# Install any needed packages specified in requirements.txt 
RUN pip install -r requirements.txt --proxy \ 
https://proxy:8080 --trusted-host pypi.python.org 

# Make port 80 available to the world outside this container 
EXPOSE 80 

# Define environment variable 
ENV NAME World 

# Run app.py when the container launches 
## Where is the ENTRYPOINT ? 
1

この質問に直接答えはありませんが、これにより多くの時間を節約できます。

すべてのdockerコマンドは、新しいレイヤーをイメージに追加します。画像を構築するとき、ドッカーはどのレイヤーを再構築する必要があるかを把握しようとします。おそらく、あなたがビルドするたびに、あなたのアプリのファイルを変更するでしょう。これは最初のレイヤーなので、ビルドするたびに要件をインストールする必要があります。これは余分な待遇を追加することができます。

requirements.txtにコピーし、要件を先にインストールしてください。そのレイヤーは、要件を変更するまでキャッシュされます。

# Use an official Python runtime as a parent image 
FROM python:2.7-slim 

# Install any needed packages specified in requirements.txt 
COPY requirements.txt requirements.txt 
RUN pip install -r requirements.txt --proxy https://proxy:8080 --trusted-host pypi.python.org 

ADD . /app  
WORKDIR /app 
EXPOSE 80 

ドッカーファイルを作成するときに、作成するレイヤーを視覚化し、ビルド時間を短縮するのに役立つ方法を教えてください。

関連する問題

 関連する問題