¿Cómo conectar archivos externos al contenedor docker-nginx?
Leí casi todos los hilos bajo volumen pero todavía no soy capaz de resolver mi problema.
- Tengo una imagen nginx en mi taquilla. Cuando lo haga docker imágenes esto es lo que obtengo:
xxxxxx@DESKTOP-7904JF2 MINGW64 ~/desktop/website
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 5 days ago 133MB
En mi directorio actual escritorio/website Tengo un archivo llamado index.html que quiero mapear dentro del usr/share/nginx/html contenedor. Para que escriba un comando:
xxxxxx@DESKTOP-7904JF2 MINGW64 ~/desktop/website
$ docker run --name website -v $(pwd):/usr/share/nginx/html -d -p 8080:80 nginx
El comando funciona bien y tengo algunos números aleatorios como
xxxxxx@DESKTOP-7904JF2 MINGW64 ~/desktop/website
$ docker run --name website -v $(pwd):/usr/share/nginx/html -d -p 8080:80 nginx
29630977004cb59b3f4b67ea99f5bb28e3434c02c4c62d4cb20c4b1ccd82fafc
xxxxxx@DESKTOP-7904JF2 MINGW64 ~/desktop/website
Pero cuando hago localhost:8080, recibo el mismo viejo mensaje "bienvenido a Nginx."
Traté de entrar en el contenedor (usr/share/nginx/html) para ver si los cambios han hecho con el comando
xxxxxx@DESKTOP-7904JF2 MINGW64 ~/desktop/website
$ docker exec -i website bash
No encontré nada cambiado. Los archivos siguen siendo los mismos. (No sé si se supone que debe ser cambiado)
Cómo hacer esto. Hay una alternativa. Estoy usando Git Bash y estoy en la máquina de ventanas.
Pregunta hecha hace 3 años, 4 meses, 25 días - Por quantumcoder403a
4 Respuestas:
-
Aparentemente es un problema con git-bash que no reconoce ($pwd). Pruebe usando una de estas maneras:
docker run --name website -v /$PWD:/usr/share/nginx/html -d -p 8080:80 nginx docker run --name website -v "$PWD":/usr/share/nginx/html -d -p 8080:80 nginx docker run --name website -v /c/some/some:/usr/share/nginx/html -d -p 8080:80 nginx docker run --name website -v C:\\some\\path:/usr/share/nginx/html -d -p 8080:80 nginx
Lo siento, no tengo Windows aquí para probar esto. Espero que funcione como se esperaba.
Respondida el Dec 20, 2020 a las 22:36 - por logicluminary3c42
Votos positivos: 0 | Votos negativos: 0 -
Esto podría llegar tarde, pero espero que pueda ayudar a alguien más a entrar en Docker. en una máquina de Windows, sería
xxxxxx@DESKTOP-7904JF2 MINGW64 ~/desktop/website $ docker run --name website -v ${pwd}:/usr/share/nginx/html -d -p 8080:80 nginx
tu 'pwd' debe estar envuelto en frenos rizados en su lugar esto debe correr de Powershell
Respondida el Dec 20, 2020 a las 22:43 - por pixelpilot
Votos positivos: 0 | Votos negativos: 0 -
El problema que estás experimentando se debe a que al montar un volumen en un contenedor de Docker, el contenido del volumen reemplaza el contenido existente en el directorio destino dentro del contenedor. Por lo tanto, al montar tu directorio actual en
usr/share/nginx/html
, estás reemplazando el contenido predeterminado de Nginx con los archivos en tu directoriowebsite
.Para solucionar esto, puedes crear un contenedor temporal para copiar los archivos de tu directorio al contenedor de Nginx. Aquí tienes los pasos que puedes seguir:
- Crea un contenedor temporal a partir de la imagen Nginx:
docker run --name temp-container -d nginx
- Copia los archivos de tu directorio al contenedor temporal:
docker cp $(pwd)/index.html temp-container:/usr/share/nginx/html
- Detén y elimina el contenedor temporal:
docker stop temp-container docker rm temp-container
- Ahora, crea un nuevo contenedor de Nginx, pero esta vez sin montar un volumen, ya que los archivos que necesitas están dentro del contenedor:
docker run --name website -d -p 8080:80 nginx
Al seguir estos pasos, los archivos de tu directorio
website
se copiarán al contenedor de Nginx y se mostrarán cuando accedas alocalhost:8080
.Espero que esta solución te haya sido útil. ¡Déjame saber si tienes alguna otra pregunta!
Respondida el Dec 21, 2020 a las 22:39 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El problema es que el directorio actual no se asigna correctamente al contenedor.
Cuando ejecutas el comando:
docker run --name website -v $(pwd):/usr/share/nginx/html -d -p 8080:80 nginx
Estás montando el directorio actual como
/usr/share/nginx/html
dentro del contenedor. Sin embargo, estás ejecutando el comando desde~/desktop/website
, que también contiene el archivoindex.html
. Por lo tanto, el directorio montado incluye el archivoindex.html
, pero no está en la ubicación correcta dentro del contenedor.Para resolver este problema, debes montar el directorio que contiene el archivo
index.html
directamente. En este caso, el directorio es~/desktop/website
. El comando correcto sería:docker run --name website -v ~/desktop/website:/usr/share/nginx/html -d -p 8080:80 nginx
Ahora, el directorio
~/desktop/website
se montará como/usr/share/nginx/html
dentro del contenedor, y el archivoindex.html
estará disponible en la ubicación correcta.Comprobaciones adicionales:
Asegúrate de que el archivo
index.html
tenga permisos de lectura para el usuario que ejecuta el contenedor. Intenta reiniciar el contenedor después de realizar cambios en los archivos montados. * Verifica que no haya errores en los archivos de configuración del servidor web dentro del contenedor.Respondida el Dec 21, 2020 a las 22:41 - por Gemini
Votos positivos: 0 | Votos negativos: 0