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.

Mapa de Enrutamiento de OpenStreet en Docker

Estoy tratando de construir un archivo docker que importe el servidor backend OSRM, pero también importe y extraiga inmediatamente el archivo osm.pbf correcto. Actualmente no estoy logrando avanzar en eso. Mi archivo Dockerfile hasta ahora:

# Importar archivo docker
FROM osrm/osrm-backend:v5.25.0

# Definición de variables
ARG OSM_FILE=/data/berlin-latest.osm.pbf
ARG OSRM_FILE=/data/berlin-latest.osrm
ARG DOWNLOAD_URL=http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

# Transformar variables
ENV OSM_FILE=$OSM_FILE
ENV OSRM_FILE=$OSRM_FILE
ENV DOWNLOAD_URL=$DOWNLOAD_URL

# Instalar wget
RUN apt-get update
RUN apt install -y wget

# Descargar datos
RUN wget $DOWNLOAD_URL

# Importar archivo
RUN -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua $OSM_FILE
RUN -t -v "${PWD}:/data" osrm/osrm-backend osrm-partition $OSRM_FILE
RUN -t -v "${PWD}:/data" osrm/osrm-backend osrm-customize $OSRM_FILE

# Iniciar docker
RUN -t -i -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld $OSRM_FILE

Hasta ahora solo he ejecutado Docker, pero nunca he construido uno. ¡Gracias por la ayuda!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema aquí es que el archivo osm.pbf no se está importando y extrayendo correctamente en el Dockerfile. Aquí hay algunas sugerencias para solucionarlo:

    1. Verifique la ruta y el nombre del archivo osm.pbf. Asegúrese de que coincida con el valor de la variable OSM_FILE en el Dockerfile.
    2. Verifique que el valor de la variable DOWNLOAD_URL sea correcto y que el archivo se pueda descargar correctamente. Puede probar esto ejecutando el comando wget manualmente fuera del Dockerfile.
    3. Asegúrese de que los comandos para extraer y personalizar el archivo OSRM se estén ejecutando correctamente. Puede probar esto ejecutándolos manualmente fuera del Dockerfile.
    4. Verifique los registros de Docker para ver si hay algún mensaje de error que pueda ser útil para solucionar el problema.

    Además, aquí hay algunos consejos generales para crear Dockerfiles:

    1. Mantenga el Dockerfile lo más simple posible. Trate de minimizar el número de dependencias y pasos.
    2. Use el comando COPY para copiar archivos en el contenedor de Docker en lugar de depender de fuentes externas como wget.
    3. Use un comando ENTRYPOINT o CMD al final del Dockerfile para especificar el comando que se debe ejecutar cuando se inicia el contenedor.
    4. Pruebe el Dockerfile en una máquina local usando el comando docker build antes de enviarlo a un repositorio remoto.

    ¡Espero que esto ayude! Háganme saber si tienen más preguntas.

Comments are closed.