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.

Cómo mantener los datos de Localstack S3 después de “docker-compose down” y “docker-compose up” posteriormente.

Soy nuevo con localstack. Copié el ejemplo del archivo docker-compose. Me aseguré de montar la ruta de datos en mi máquina, y lo veo en la carpeta temporal del host. Además, veo que mis datos se añaden cuando llamo a los comandos de escritura s3, pero después de matar el docker-compose y volver a iniciar desde cero, no veo los datos de la sesión anterior.
¿Hay alguna bandera especial que necesite agregar para recargar los datos?

Archivo docker-compose:

version: ‘3.0’

services:
localstack:
image: localstack/localstack:latest
environment:
– AWS_DEFAULT_REGION=us-east-1
– EDGE_PORT=4566
– SERVICES=sqs,sns,s3
– DATA_DIR=/tmp/localstack/data
ports:
– ‘4566-4583:4566-4583’
volumes:
– “/tmp/localstack:/tmp/localstack”
– “/var/run/docker.sock:/var/run/docker.sock”

Ejemplo de ejecución:

aws –endpoint-url=http://localhost:4566 s3 mb s3://bucket-test
aws –endpoint-url=http://localhost:4566 s3 cp myfile.png s3://bucket-test

Ahora este comando devolverá el archivo

aws –endpoint-url=http://localhost:4566 s3 ls s3://bucket-test

Pero después de matar el docker y volver a ejecutar docker-compose up, no veré nada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que los datos no persisten después de detener y reiniciar el docker-compose. Para hacer que los datos sean persistentes, puedes utilizar un volumen nombrado en lugar de montar un directorio de hosts.

    Aquí hay un ejemplo de archivo docker-compose usando un volumen nombrado:

    version: '3.0'
    
    services:
      localstack:
        image: localstack/localstack:latest
        environment:
          - AWS_DEFAULT_REGION=us-east-1
          - EDGE_PORT=4566
          - SERVICES=sqs,sns,s3
          - DATA_DIR=/tmp/localstack/data
        ports:
          - '4566-4583:4566-4583'
        volumes:
          - localstack_data:/tmp/localstack/data
    
    volumes:
      localstack_data:
    

    Con esta configuración, el volumen nombrado localstack_data se creará y se montará en el contenedor, lo que permitirá que los datos persistan entre los contenedores.

    Para eliminar el volumen nombrado:

    $ docker-compose down -v
    

    Esto eliminará el volumen nombrado localstack_data, junto con los contenedores.

    Tl;dr – Utiliza un volumen nombrado para hacer que los datos sean persistentes entre las ejecuciones de docker-compose.

Comments are closed.