Tengo algunos problemas para crear una imagen acoplable debido a la forma en que se ha estructurado el código. El código está escrito en C#, y en una solución hay muchos proyectos que "soportan" la aplicación que quiero construir.
Mi problema es que si coloco el dockerfile en la raíz, puedo compilarlo sin ningún problema, y está bien, pero no creo que sea la forma óptima, porque tenemos algunos otros dockerfiles que también necesitamos compilar y si los pongo todo en la carpeta raíz, creo que terminará desordenado.
Entonces, si coloco el dockerfile en la carpeta con la aplicación, ¿cómo navego a la carpeta raíz para tomar las carpetas que necesito?
Probé con "../" pero desde mi punto de vista no parecía funcionar. ¿Hay alguna forma de hacerlo o cuál es la mejor práctica en este escenario?
ejecutarlo desde el directorio raíz:
docker build . -f ./path/to/dockerfile
en dockerfile realmente no puedes subir.
cuando el demonio docker está construyendo su imagen, usa 2 parámetros:
Dockerfile
el contexto es a lo que te refieres como .
en el archivo acoplable. (por ejemplo, como COPY . /app
) ambos afectan la imagen final: el dockerfile determina lo que sucederá. el contexto le dice a la ventana acoplable en qué archivos debe realizar las operaciones que ha especificado en ese archivo acoplable.
así es como lo dicen los documentos:
El contexto de una compilación es el conjunto de archivos ubicados en la RUTA o URL especificada. El proceso de compilación puede hacer referencia a cualquiera de los archivos en el contexto. Por ejemplo, su compilación puede usar una instrucción COPY para hacer referencia a un archivo en el contexto.
por lo tanto, generalmente el contexto es el directorio donde se coloca el Dockerfile. Mi sugerencia es dejarlo donde pertenece. nombre sus dockerfiles según su función ( Dockerfile.dev
, Dockerfile.prod
, etc.), está bien tener algunos de ellos en el mismo directorio.
después de todo, tú eres el que especifica el contexto. ya que el comando docker build
acepta el contexto y la ruta del archivo docker. cuando ejecuto:
docker build .
de hecho, le estoy dando el contexto de mi directorio actual (he omitido la ruta del archivo docker, por lo que el valor predeterminado es PATH/Dockerfile
)
entonces, si tiene un dockerfile en dockerfiles/Dockerfile.dev
, debe ubicarse en el directorio que desea como contexto y ejecutar:
docker build . -f dockerfiles/Dockerfile.dev
lo mismo se aplica a la sección de compilación docker-compose
(usted especifica allí un contexto y la ruta del archivo docker)
Espero que haya tenido sentido.
Puede usar el comando EJECUTAR y después y hacer lo que quiera.
RUN cd ../ &