2014-07-07 2 views
1

레일 응용 프로그램을 배포 할 Dockerfile을 만들려고하지만 Docker 파일을 사용할 경우 ruby ​​설치가되지 않습니다. 그것은/dev/fd가 없다고 말합니다. 정상적인 기계에서해야 할 일은 모두 명령어 ln -sf /proc/self/fd /dev/fd을 입력하는 것뿐입니다. 그러나 Dockerfile에이 명령을 입력하면/dev/fd에 링크되지 않습니다. 여기에 내 Docker 파일이 있습니다 :Dockerfile에서 파일을 어떻게 링크 할 수 있습니까?

# Select ubuntu as the base image 
FROM ubuntu 

# Install nginx, nodejs and curl 
RUN apt-get update -q 
RUN apt-get install -qy nginx 
RUN apt-get install -qy curl 
RUN apt-get install -qy nodejs 
RUN echo "daemon off;" >> /etc/nginx/nginx.conf 

# Install rvm, ruby, bundler 
RUN curl -sSL https://get.rvm.io | bash -s stable 
RUN ln -sf /proc/self/fd /dev/fd 
RUN echo "source /usr/local/rvm/scripts/rvm" >> /etc/bash.bashrc 
RUN /bin/bash -l -c "rvm requirements" 
RUN /bin/bash -l -c "rvm install 2.1.2" 

나는/dev/fd : missing file or folder 또는 이와 비슷한 오류가 나타납니다. 마지막 줄을 생략하면 모든 것이 성공적으로 빌드됩니다. 그러나 방금 빌드 한 이미지에 로그인하면/dev/fd에 cd되어 해당 파일이나 디렉토리는 표시되지 않습니다. 어떻게 성공적으로 구축되었지만 내가 말한 파일을 링크하지 않습니까?

답변

3

난 당신이 실행 명령을 사용하려고하고 그것은 당신이 rvm없이 루비를 설치 시도 할 수 있습니다 /dev/

RUN ln -sf /proc/self/fd /dev/ 
0

에 심볼릭 링크를 만들려면 다음 /dev/fs/fs

을 시도하게하려고합니다. 도커 컨테이너를 사용하고 있으므로이 컨테이너는 이미 격리되어 있으므로이 상황에서 rvm을 사용하면 많은 도움이되지 않습니다. (면책 조항 : 우리 회사는을 설정하는 자동화 된 빌드를 먹으 렴)

당신은 1uptalent/ruby-2.1으로 인덱스에 기본 루비 이미지에서 이미지를 구축하려고하거나 its Dockerfile에서 빌려. 그런 다음 위에 레일 앱을 추가하십시오.

+0

멋진,이 빌드는 고정 표시기 이미지에 루비를 설치합니다. 하지만 내 애플 리케이션을위한 레일 서버를 실행뿐만 아니라 레일을 설치하지 않아도됩니까? – lgdelacruz

+0

@ user3739610 예, FROM 이미지로 사용하고 Rails 앱을 맨 위에 추가 할 수 있습니다. –

+0

정말 고마워요. 당신은 많은 도움이되었습니다! – lgdelacruz

1

2 센트 : 함께 설치하려는 서비스에서 Dockerfiles를 읽은 것만 섞어서 사용하려면 이전에 만든 컨테이너를 사용하는 것이 좋습니다. 경로를 찾을 수는 있지만 여전히 나는 바퀴 달린 머리를 재발견하지 않기를 제안한다. 재사용을위한 것이고 이미 nginx와 ruby ​​컨테이너가있다. 또한 나는 당신이 원하는 특정 버전의 컨테이너를 다운로드 할 필요가있는 다른 루비 버전이 필요하다면 docker 안에 rvm을 설치하는 것은 좋은 생각이 아니라고 생각합니다.

+0

이 팁을 주셔서 감사합니다. 정말 말이 되네. 네, 저는 컴퓨터 보안 연구소의 인턴입니다. 현재 레일즈 앱을 배포하는 빠르고 효율적인 방법을 찾으려고합니다. 나는 여기에있는 모든 팁을 사용하여 작동하도록했습니다. 정말 고마워요! – lgdelacruz

+0

A는 조작과 임무에 경험이 있으며, 도커는 갈 길입니다!. BTW는 적어도 업보트를 벌었습니까? –

+0

나는 15 가지 이상의 평판이 필요했기 때문에 노력했지만 실패했다. 미안해. 나는 여기 처음 온거야. – lgdelacruz

0

Dockerfiles에서와 같이 링크를 만들지 만 /dev FS에는 없습니다.

컨테이너에있어 개발자 FS를 수정할 수는 있지만 생성 된 이미지에서 컨테이너를 새로 시작할 때 바뀝니다. 실행 용기에 장착 참조 :

tmpfs on /dev type tmpfs (rw,nosuid,mode=755)

관련 문제