2016-10-13 7 views
1

私はapacheを実行するためのドッカーイメージを構築しました。私はubuntuのベースイメージから構築したので、私が望むバージョンのApacheとPHPを設定することができました。フォアグラウンドでApacheを実行するために、ドッカーファイルの最後にCMDを追加しました。私のドッカーイメージがサービスとしてApacheを実行するにはどうすればいいですか?

FROM ubuntu:16.04 

RUN apt-get update && \ 
    apt-get install -y --allow-unauthenticated software-properties-common && \ 
    add-apt-repository ppa:ondrej/apache2 && \ 
    apt-get update && \ 

    .... 

WORKDIR/

CMD ["/usr/sbin/apachectl","-DFOREGROUND"] 

(他のサービスと一緒に)ドッカーの作成を使用してコンテナを実行しようとしています。しかし、コンテナはすぐに出ます。 dockerコマンドでイメージを実行する場合も同様です。私はdocker run -it my_imageでそれを実行した場合興味深いことに、その後、コンテナが開始され、私はbashシェルに入れてる

docker run my_image 
docker ps 

。 (私が使用しているubuntuベースイメージのデフォルトのCMDはbashだと思います)。

何か不足していますか? Dockerfileを書いて、apacheがイメージ上のサービスとして動作するようにするにはどうしたらいいですか?

+0

を 'ドッカログが'何を言うん:

ここでは例がDockerfile、関連docker build出力(特にCMDステップ)、および実行されていることの一例ですか? – johnharris85

+0

"私はDockerfileからコンテナを実行しようとしています(他のサービスと一緒に)" - 意味が分かりませんか?どういう意味ですか? – johnharris85

+1

「面白いことに、私がdocker run -it my_imageで走らせたら」 - 奇妙なことに、Dockerfile全体を投稿して、それをどのように実行しようとしていますか(さまざまな方法で)してください。 – johnharris85

答えて

3

イメージを実行しているときにbashシェルを取得している場合は、CMD ["/usr/sbin/apachectl","-DFOREGROUND"]が有効ではないようです。

docker buildコマンドが正常に実行され、ビルド済みイメージを実行していて、他のイメージではないことを再度確認します。

$ cat Dockerfile 
FROM ubuntu:16.04 
RUN apt-get -y update && apt-get -y install apache2 && rm -rf /var/lib/apt/lists/* 

CMD apachectl -DFOREGROUND 
$ docker build -t myapache . 
Sending build context to Docker daemon 2.048 kB 
Step 1 : FROM ubuntu:16.04 
---> 2fa927b5cdd3 
Step 2 : RUN apt-get -y update && apt-get -y install apache2 && rm -rf /var/lib/apt/lists/* 
---> Using cache 
---> f766fd84056d 
Step 3 : CMD apachectl -DFOREGROUND 
---> Running in 2814d231e50e 
---> 774b579e43ce 
Removing intermediate container 2814d231e50e 
Successfully built 774b579e43ce 
$ r run -d --name myapache -p 80:80 myapache 
4718994f1669306c64ac6846f4e0f87aa15a63a888ca7d5c8ba711f39379db57 
$ http://localhost:80/ 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <!-- 
    Modified from the Debian original for Ubuntu 
    Last updated: 2014-03-19 
    See: https://launchpad.net/bugs/1288690 
... 
+1

それはそうです。私が実行していたコンテナは、私が思ったDockerfileからではありませんでした。ビルドの出力を確認することは、それを特定するために必要なものでした。ありがとう@programmerq! –

+0

CMD apachectl -DFOREGROUNDが私の問題でした。今、それは動作します、ありがとう:-) – erknrio

関連する問題