¿Cómo puedo vincular files en Dockerfile?

Intento crear un file Docker que implementará la aplicación Rails, pero mi problema es que Ruby no se instalará si utilizo un file acoplable. dice / dev / fd falta. En una máquina normal todo lo que tengo que hacer es escribir el command ln -sf /proc/self/fd /dev/fd y todo está arreglado. Sin embargo, cuando puse ese command en mi file Docker, no se vincula a / dev / fd. Aquí está mi file Docker:

 # 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" 

Me sale un error como / dev / fd: file o carpeta faltante o algo así. Si omito la última línea, todo se construye con éxito, pero cuando inicio session en la image que acabo de crear y cd en / dev / fd, dice que no hay tal file o directory. ¿Cómo es que se construye con éxito, pero no vincula los files que le digo?

Intenté usar el command que ejecuta e intenta hacer /dev/fs/fs

Intente lo siguiente para crear el enlace simbólico en /dev/

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

Mis 2 centavos: te animo a que uses un contenedor creado previamente para lo que quieras, si quieres mezclar cosas solo lees Dockerfiles de los services que deseas instalar juntos, estoy seguro de que encontrarás tu path, pero aún así sugiero que no redevise el acoplador de ruedas está destinado a la reutilización y ya hay contenedores nginx y ruby. También creo que instalar rvm dentro de Docker no es una buena idea, si solo necesitas una versión de Ruby diferente solo necesitas download un contenedor con una versión específica que desees.

Puedes intentar instalar ruby ​​sin rvm . Como está utilizando un contenedor acoplable, ya está aislado y no obtendrá mucho (o nada) de usar rvm en este context.

Puede intentar crear su image a partir de una image de ruby ​​base en el índice, como 1uptalent/ruby-2.1 ( exención de responsabilidad: es una compilation automatizada que configuró mi empresa ) o pedir prestada de su file Docker . Luego solo agrega la aplicación de Rails encima.

Estoy creando enlaces como los que hace en Dockerfiles, pero no en /dev FS.

Estás en un contenedor, puedes modificar el FS de desarrollo, pero se reemplaza cuando reinicias tu contenedor desde la image creada. Ver assembly en contenedor en ejecución:

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