2016-02-18 9 views
7

ドッキングされたセレングリッドの設定に取り掛かりました。私はpytestコンテナ(以下を参照)からPythonテストを実行することができます。 しかし、私はpytestを制御しようとしている別のランプコンテナをセットアップしました。 私はpytestコンテナをスタンドアロンにして、アイドル状態でLAMPコンテナからのコマンドを待っています。サービスとしてドッカーコンテナでpy.testを実行します。

私はこのDockerfileを持っている:

# Starting from base image 
FROM ubuntu 

#----------------------------------------------------- 
# Set the Github personal token 
ENV GH_TOKEN blablabla 

# Install Python & pip 
RUN apt-get update 
RUN apt-get upgrade -y 
RUN apt-get install -y python python-pip python-dev && pip install --upgrade pip 

# Install nano for #debugging 
RUN apt-get install -y nano 

# Install xvfb 
RUN apt-get install -y xvfb 

# Install GIT 
RUN apt-get update -y && apt-get install git -y 

# [in the/folder] 
RUN git clone https://$GH_TOKEN:[email protected]/user/project.git /project 

# Install dependencies via pip 
WORKDIR /project 
RUN pip install -r dependencies.txt 
#----------------------------------------------------- 

# 
CMD ["/bin/bash"] 

私はこれで[開発用]手動pytestコンテナを起動します。

docker run -dit -v /project --name pytest repo/user:py 

事は、私が開発を終え、私はpytestを持つようにしたいということですコンテナをdocker-composeから起動し、[リンクとボリュームを持つ]他のコンテナに接続します。 私はちょうどそれを維持することはできません。

私はこれを使用:

pytest: 
    image: repo/user:py 
    volumes: 
    - "/project" 
    command: "/bin/bash tail -f /dev/null" 

が、didntの仕事を。

したがって、Dockerファイル内で、特定のCMDまたはENTRYPOINTを使用する必要がありますか?

docker-composeファイルからcommandを使用する必要がありますか?

+0

あなたのドッカーの実行には、奇妙な '-dit'があります。どちらもdまたは両方ではありません.DockerfileにはCMDまたはENTRYPOINTが必要です – user2915097

+0

-ditで最初に起動したので、最初に立ち上がっている別のコンテナを作って立ち上げました。私はそれが含まれているコマンドがそれを維持するだろうが何を持っている必要があることを知っている? –

+1

@ user2915097とは、コンテナをデーモン(バックグラウンド)プロセスとして実行するには 'it'が必要ではなく、' -d'だけを意味すると思います。 '-it'は、対話的にコンテナを実行し、' tty'を割り当てるのに便利です。 – Auzias

答えて

1

私はあなたのテストの実行方法を正確にはわかりませんが、同様の使用例があります。あなたはEnvoy projectの中でcmd.sha sample testでこれをどのようにして見ることができます。

私はテストをどのように実行しますか?私はpytestも使用していますが、それは重要ではありません: 1.テストをせずにスタックを起動するためにdocker-composeを使用してください。 2.スタックが要求を待つのを待ちます。私にとってこれは200応答のポーリングを意味します 3.テストコンテナを別々に実行しますが、作成スタックと同じネットワークを使用していることを確認してください。

これはいくつかの方法で実行できます。これをすべてBashスクリプトに入れ、ホストからすべて制御することができます。

私の場合、私はこれをすべてPythonコンテナから行います。あなたの頭を包み込むのは少しですが、アイデアには、ホストが起動するPythonテストコンテナがあります。次に、コンテナ自体が作成を使用してスタックをホスト上に戻します(dockerception)。そして、テストコンテナで、私たちはpytestテストを実行します。完了すると、スタックを構成し、戻りコードをプッシュします。

関連する問題