es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Docker-Compose conectando volumenes, problema de compartición de archivos.

Soy un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código y la salida en formato markdown.

Soy nuevo en Docker y tuve un problema que espero que puedas ayudarme.

He definido varios servicios (HTTPSERV, IMED, etc.) en mi archivo de docker-compose y estos servicios tienen un código Python dentro y un archivo docker para ejecutarlos. El archivo Docker también copia los archivos requeridos en una ruta de host definida en docker-compose. El HTTPSERV y el IMED deben compartir un archivo de texto y exponerlo a un usuario externo enviando una solicitud GET a HTTPSERV.

En docker-compose he definido un directorio de host local y lo he vinculado a un volumen con nombre. Los servicios y los archivos Docker están destinados a compartir cada archivo de servicio y ejecutarse.

Tan pronto como ejecuto el docker-compose, los archivos relacionados con el primer servicio copian archivos en el directorio de la RUTA donde se encuentra “src” y cambian los permisos del “src” carpeta sin permitir que los otros servicios copien sus archivos. Esto hace que los siguientes servicios no puedan encontrar los archivos apropiados y todo el proceso de orquestación falla.

versión: “3.9”
redes:
predeterminado:
ipam:
configuración:
– subred: 172.28.0.2/20
servicios:
httpserv:
usuario: root
nombre_del_contenedor: httpserver
construir: ./HTTPSERV
volúmenes:
– myapp:/httpApp:rw
redes:
predeterminado:
ipv4_address: 172.28.0.5
puertos:
– “8080:3000”
rabitQ:
usuario: root
nombre_del_contenedor: rabitQ
imagen: rabbitmq:3.8-management
redes:
predeterminado:
ipv4_address: 172.28.0.4
puertos:
– “9000:15672”
imed:
usuario: root
nombre_del_contenedor: IMED-Serv
construir: ./IMED
volúmenes:
– myapp:/imed:rw
redes:
– predeterminado
# restart: en la falla
orig:
usuario: root
nombre_del_contenedor: ORIG-Serv
construir: ./ORIG
volúmenes:
– myapp:/orig:rw
redes:
– predeterminado
# restart: en la falla
obse:
nombre_del_contenedor: OBSE-Serv
construir: ./OBSE
volúmenes:
– myapp:/obse:rw
redes:
– predeterminado
# restart: en la falla
depends_on:
– “httpserv”
links:
– httpserv
volúmenes:
myapp:
conductor: local
driver_opts:
tipo: ninguno
o: ligadura
dispositivo: /home/dockerfiles/hj/a3/src

El contenido del archivo Docker es similar para la mayoría de los servicios y es el siguiente:

FROM python:3.8-slim-buster

WORKDIR /imed
COPY . .
RUN pip install –no-cache-dir -r imed-requirements.txt
RUN chmod 777 ./imed.sh
CMD [“./imed.sh”]

El código tiene acceso raíz y el ID de usuario y el ID de grupo están configurados. También usé volúmenes con nombre anónimos pero el mismo problema ocurre.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo un problema de permisos. Es posible que los archivos que está copiando el primer servicio se estén copiando con permisos incorrectos, lo que impide que los otros servicios accedan a ellos.

    Podrías intentar establecer la directiva USER en tu Dockerfile para asegurarte de que los archivos se estén copiando con los permisos correctos. También podrías intentar establecer la bandera --chown cuando ejecutes docker-compose para asegurarte de que los archivos se estén copiando con los permisos correctos.

    Si eso no funciona, podrías intentar utilizar un volumen nombrado en lugar de un directorio local en el host. Esto asegurará que los archivos se estén copiando con los permisos correctos.

    Si sigues teniendo problemas, por favor proporciona más información sobre tu configuración y los mensajes de error exactos que estás viendo.

Comments are closed.