ElasticMQのDockerコンテナ起動時にキューを自動作成する
以前ElasticMQ用のDockerfileを作り、Dockerコンテナで動くようにした。
ElasticMQは設定ファイルを準備することで、起動時にキューを自動作成できる。
ドキュメントのとおりに custom.conf
を作成して Dockerfile
と同じディレクトリに配置する。
include classpath("application.conf") queues { queue1 { defaultVisibilityTimeout = 10 seconds delay = 5 seconds receiveMessageWait = 0 seconds deadLettersQueue { name = "queue1-dead-letters" maxReceiveCount = 3 // from 1 to 1000 } } queue1-dead-letters { } }
Dockerfile
を修正する。
FROM java:8 RUN mkdir /var/elasticMQ WORKDIR /var/elasticMQ EXPOSE 9324 RUN wget -q https://s3-eu-west-1.amazonaws.com/softwaremill-public/elasticmq-server-0.13.9.jar COPY custom.conf /var/elasticMQ ENTRYPOINT ["/usr/bin/java", "-Dconfig.file=custom.conf", "-jar", "elasticmq-server-0.13.9.jar"]
あとは docker build
し直して、コンテナを起動すればよい。
コンテナが起動したらキューが作成されているか確認してみる。
$ aws sqs list-queues --endpoint-url http://localhost:9324 { "QueueUrls": [ "http://localhost:9324/queue/queue1-dead-letters", "http://localhost:9324/queue/queue1" ] }
ちゃんと2つ作成されている。