2016-10-13 4 views
1

아파치를 실행하기위한 도커 이미지를 만들었습니다. 우분투 기본 이미지에서 만들었으므로 원하는 아파치와 PHP 버전을 설정할 수 있습니다. 전 도커 파일 끝에 CMD을 추가하여 전경에서 아파치를 실행했습니다.도커 이미지로 아파치를 서비스로 실행하는 방법

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 my_image 
docker ps 

나는 다음 docker run -it my_image와 컨테이너 시작을 실행 흥미롭게 경우 나는 bash 쉘로 촬영하고 있습니다. (내가 사용하는 우분투 기본 이미지에서 기본 CMD는 배시라고 생각합니다.)

내가 누락 된 항목이 있습니까? Dockerfile을 작성하여 아파치가 이미지 서비스로 실행되도록하려면 어떻게해야합니까?

+0

'말 : 여기

는 예를 Dockerfile, 관련 docker build 출력 (특히 CMD 단계), 실행 그것의 예는? – johnharris85

+0

"다른 서비스와 함께 Dockerfile에서 컨테이너를 실행하려고합니다."- 이것이 맞는지 확실하지 않습니까? 무슨 말이에요? – johnharris85

+1

"재미있게 도커가 달린 상태에서 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

관련 문제