ElasticMQのDockerコンテナ起動時にキューを自動作成する

以前ElasticMQ用のDockerfileを作り、Dockerコンテナで動くようにした。

www.tomcky.net

ElasticMQは設定ファイルを準備することで、起動時にキューを自動作成できる。

github.com

ドキュメントのとおりに 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つ作成されている。