2017-01-31 11 views
3

누군가가 내가 누락 된 것을 말할 수 있다고 생각하니? 이것은 webrick을 사용하는 루비 응용 프로그램이며 응용 프로그램을 컨테이너에 넣으려고합니다. Mac OSX 10.12.3 Sierra에서 실행 중입니다. 여기 내 Dockerfile입니다Docker 컨테이너가 빈 응답을 보내고 있음

다음
FROM ruby:2.4.0-alpine 
RUN apk add --no-cache gcc musl-dev libstdc++ g++ make 
RUN gem install jekyll bundler redcarpet 
RUN mkdir -p /usr/app/jekyll 
COPY . /usr/app/jekyll 
WORKDIR /usr/app/jekyll 
EXPOSE 4000:4000 
CMD ["jekyll", "serve"] 

내가 호스트에서 직접 서비스를 실행하면 이미지가

docker build -t chb0docker/cheat . 

을 구축하는 방법이다, 그것은

Violas-MacBook-Pro:progfun-wiki cbongiorno$ jekyll serve & 
[1] 49286 
Violas-MacBook-Pro:progfun-wiki cbongiorno$ Configuration file: /Users/cbongiorno/development/progfun-wiki/_config.yml 
Configuration file: /Users/cbongiorno/development/progfun-wiki/_config.yml 
      Source: /Users/cbongiorno/development/progfun-wiki 
     Destination: /Users/cbongiorno/development/progfun-wiki/_site 
Incremental build: disabled. Enable with --incremental 
     Generating... 
        done in 0.409 seconds. 
Auto-regeneration: enabled for '/Users/cbongiorno/development/progfun-wiki' 
Configuration file: /Users/cbongiorno/development/progfun-wiki/_config.yml 
    Server address: http://127.0.0.1:4000/ 
    Server running... press ctrl-c to stop. 

가 서버가되어 있는지 확인 잘 실행 :

Violas-MacBook-Pro:progfun-wiki cbongiorno$ curl localhost:4000 2> /dev/null | wc -l 
     40 

고정 표시기에서 :

Violas-MacBook-Pro:progfun-wiki cbongiorno$ fg 
jekyll serve 
^C 
Violas-MacBook-Pro:progfun-wiki cbongiorno$ docker run -d --name jekyll -p 4000:4000 chb0docker/cheat 
e766e4acb007033583885b1a3c52dc3c2dc51c6929c8466f3a4ff958f76ebc5f 

우리가 wget 대신 curl로 (위 GET을 실행할 경우이 아니기 때문에, 프로세스 지금

Violas-MacBook-Pro:progfun-wiki cbongiorno$ docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS     NAMES 
e766e4acb007  chb0docker/cheat "jekyll serve"  19 minutes ago  Up 32 seconds  0.0.0.0:4000->4000/tcp jekyll 
Violas-MacBook-Pro:progfun-wiki cbongiorno$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' jekyll 
172.17.0.3 
Violas-MacBook-Pro:progfun-wiki cbongiorno$ docker logs jekyll 
Configuration file: /usr/app/jekyll/_config.yml 
Configuration file: /usr/app/jekyll/_config.yml 
      Source: /usr/app/jekyll 
     Destination: /usr/app/jekyll/_site 
Incremental build: disabled. Enable with --incremental 
     Generating... 
        done in 0.329 seconds. 
Auto-regeneration: enabled for '/usr/app/jekyll' 
Configuration file: /usr/app/jekyll/_config.yml 
    Server address: http://127.0.0.1:4000/ 
    Server running... press ctrl-c to stop. 

시도를 확인하고 일부 데이터

Violas-MacBook-Pro:progfun-wiki cbongiorno$ curl localhost:4000 2> /dev/null | wc -l 
     0 
Violas-MacBook-Pro:progfun-wiki cbongiorno$ curl 172.17.0.3:4000 2> /dev/null | wc -l 
     0 
Violas-MacBook-Pro:progfun-wiki cbongiorno$ curl 0.0.0.0:4000 2> /dev/null | wc -l 
     0 

을 얻을 수 있지만, 이 컨테이너에 설치됨) 모든 것이 컨테이너 내부에 있음을 알 수 있습니다.

docker exec -it jekyll /usr/bin/wget -q -O - localhost:4000 | wc -l 
     40 

앱 문제입니까?

답변

4

지킬이 로컬 호스트에 바인딩되어있는 것처럼 보입니다.

docker run -d --name jekyll -p 127.0.0.1:4000:4000 

또는 0.0.0.0에 지킬 바인딩이 있습니다 : 하나 같이 컨테이너를 시작

CMD ["jekyll", "serve", "--host", "0.0.0.0"] 
+0

을 나는 의심 정확히 무엇을 그! 문제는 "무엇을 해야할지"였습니다. 이미지를 완전히 이식성있게 만들었고 아무도 그것을 실행하기 위해 추가 정보를 알 필요가 없기 때문에 옵션 2를 사용했습니다. –