如何在本地使用docker for sqs

ne5o7dgx  于 2022-11-03  发布在  Docker
关注(0)|答案(2)|浏览(192)

我正在我的项目中使用AWS SQS。我想使用这个进行本地安装。为了SQS的目的,我在我的项目中添加了dokcer_local
我已经更新了docker文件,添加了这个链接中的建议。

FROM java:8

ADD https://s3-eu-west-1.amazonaws.com/softwaremill-public/elasticmq-server-0.13.8.jar /
COPY custom.conf /
ENTRYPOINT ["/usr/bin/java", "-Dconfig.file=custom.conf", "-jar", "/elasticmq-server-0.13.8.jar"]

EXPOSE 9324

CMD ["-help"]

当我执行命令docker ps时,我的屏幕上出现了这个

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
48e934fc6c43        mysql:5.7.16        "docker-entrypoint.s…"   24 minutes ago      Up 24 minutes       0.0.0.0:10612->3306/tcp   xyz_mysql_1
0af050bd3332        vsouza/sqs-local    "/usr/bin/java -Dcon…"   2 hours ago         Up 2 hours          0.0.0.0:9324->9324/tcp    wizardly_yalow

我已经在我的docker-compose.yml文件中添加了sqs条目,如下所示:

sqs:
    image: s12v/elasticmq
    ports:
    - "9324:9324".

现在我无法理解如何在我的控制台上使用sqs。在使用此命令sudo docker exec -it 0af050bd3332 sh进入sqs的shell后。当我尝试列出队列时,它正在打印sh: 2: list-queues: not found错误。
我试过很多方法,但似乎都不起作用。

rdrgkggo

rdrgkggo1#

您的Dockerfile正在创建一个ElasticMQ服务器。后者是一个与SQS兼容的"message queue system"。因此,您可以像使用SQS一样使用它,只是在使用AWS CLI或SDK时必须更改endpoint参数。
让我们在这里做一个交互式示例:
1.运行以下Docker命令:

$ docker run -p 9324:9324 -p 9325:9325 softwaremill/elasticmq

1.现在,在另一个选项卡中,执行以下AWS CLI命令(请注意,--endpoint参数指向上面创建的本地运行的ElasticMQ服务器):

$ aws --region=us-west-2 --endpoint=http://localhost:9324 sqs list-queues

结果应为空。
1.现在尝试创建一个队列:

$ aws --region=us-west-2 --endpoint=http://localhost:9324 sqs create-queue --queue-name=test

{
    "QueueUrl": "http://localhost:9324/000000000000/test"
}

1.现在再次执行list-queues,注意您有了一个新队列:

$ aws --region=us-west-2 --endpoint=http://localhost:9324 sqs list-queues

{
    "QueueUrls": [
        "http://localhost:9324/000000000000/test"
    ]
}

希望这对你有帮助!
拉菲德

g6ll5ycj

g6ll5ycj2#

在我们的项目中,我们在docker中运行Localstack,它包含所有可用的AWS服务。
非常容易使用,here是一个示例docker合成文件

相关问题