如何在docker-compose关闭和稍后打开后保留本地堆栈S3的数据

kgsdhlau  于 2022-11-22  发布在  Docker
关注(0)|答案(2)|浏览(133)

我是localstack新手,我复制了docker-compose示例。我确保将数据路径挂载到我的机器中,并且我确实在host tmp文件夹中看到了它。此外,我在调用s3 write命令时看到了数据被追加,但在我杀死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"

运行示例:

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
70gysomp

70gysomp1#

您的数据将通过运行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"

我的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'
t1rydlwq

t1rydlwq2#

正如localstack文档(see "Deprecated" section)中提到的,DATA_DIR已经被弃用。他们要求您在描述中使用PERSISTANCE=1,它将把状态存储在/var/lib/localstack/state目录中。
然而,PERSITANCE=1并不等同于DATA_DIR。在此弃用之后,这现在是Localstack Pro下的一个付费功能。
您现在必须使用S3_DIR来指定您的本地S3目录,只有当您使用LOCALSTACK_API_KEY指定Localstack Pro API密钥时,它才起作用。

相关问题