如何在 docker-compose 关闭并稍后启动后保留 localstack S3 的数据

Ehu*_*Lev 13 amazon-s3 docker docker-compose localstack

我是 localstack 的新手,我复制了 docker-compose 示例。我确保将数据路径安装到我的机器中,并且我确实在主机 tmp 文件夹中看到它,此外,我在调用 s3 写入命令时看到我的数据被附加,但是在我杀死 docker-compose 并从头开始启动它之后,我看不到上一会话的数据。我需要添加一个特殊标志来重新加载数据吗?

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"
Run Code Online (Sandbox Code Playgroud)

运行示例:

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

#Now this command will return the file
aws --endpoint-url=http://localhost:4566 s3 ls s3://bucket-test
# But after I will kill the docker and run docker-compose up again I will see nothing
Run Code Online (Sandbox Code Playgroud)

小智 5

您的数据将通过运行删除docker-compose down。这将停止并删除您的容器:https ://docs.docker.com/compose/reference/down/

要停止容器而不删除卷,请运行:docker-compose stop

我能够通过添加“DATA_DIR”和以下卷来保留与 ssm 参数相关的数据:

 - "/tmp/localstack:/tmp/localstack"
 - "/var/run/docker.sock:/var/run/docker.sock"
Run Code Online (Sandbox Code Playgroud)

我的 docker-compose.yml 文件如下所示:

version: '3.0'
services:
  localstack:
    build: ./localstack
    container_name: localstack
    environment:
      - SERVICES=${LOCALSTACK_SERVICES:-ssm,cloudwatch,cloudformation}
      - DATA_DIR=${LOCALSTACK_DATA_DIR:-/tmp/localstack/data}
      - AWS_DEFAULT_REGION=us-west-2
      - EDGE_PORT=4566
      - LOCALSTACK_API_KEY=${LOCALSTACK_API_KEY}
    volumes:
      - ./localstack/bootstrap:/opt/bootstrap/
      - ./data:/tmp/localstack
      - "/var/run/docker.sock:/var/run/docker.sock"
    ports:
      - '4566:4566'
      - '443:443'
Run Code Online (Sandbox Code Playgroud)