[Docker] [ActiveMQ] Docker-compose do ActiveMQ Artemis

artemis-logo

Apache ActiveMQ é um message brocker de código aberto feito em Java, suporta diferentes tipos de protocolo como AMQP, STOMP, MQTT e JMS.

“Apache ActiveMQ™ is the most popular open source, multi-protocol, Java-based messaging server. It supports industry standard protocols so users get the benefits of client choices across a broad range of languages and platforms. Connectivity from C, C++, Python, .Net, and more is available. Integrate your multi-platform applications using the ubiquitous AMQP protocol. Exchange messages between your web applications using STOMP over websockets. Manage your IoT devices using MQTT. Support your existing JMS infrastructure and beyond. ActiveMQ offers the power and flexibility to support any messaging use-case. There are currently two “flavors” of ActiveMQ available – the “classic” 5.x broker and the “next generation” Artemis broker. Once Artemis reaches a sufficient level of feature parity with the 5.x code-base it will become ActiveMQ 6. Initial migration documentation is available.” http://activemq.apache.org

A nova versão do ActiveMQ Artemis foi disponibilizada recentemente com uma documentação muito boa inclusive com ja com a criação do Docker, veja mais sobre a documentação em:

https://activemq.apache.org/components/artemis/

Sobre o Docker eles disponibilizaram um repositório no GitHub com o Dockerfile e scripts para a criação da imagem:

https://github.com/apache/activemq-artemis/tree/master/artemis-docker

Porém gostei muito da implementação do VROMERO, que encontrei no hub.docker:

https://hub.docker.com/r/vromero/activemq-artemis

Atravéz desses dados gerei um docker-compose para sua inicialização:

version: '3.3'

services:

  amq:
    image: vromero/activemq-artemis:latest-alpine
    container_name: activemq
    environment:
      ARTEMIS_USERNAME: user-amq
      ARTEMIS_PASSWORD: password-amq
    ports:
      - 8161:8161
      - 61616:61616

Vale a pena olhar a implementação do vromero/activemq-artemis em seu repositório para uma customização mais completa do compose:

https://github.com/vromero/activemq-artemis-docker

Docker – Como iniciar o container automaticamente com o sistema. (How do I make a Docker container start automatically on system boot?)

dockerUtilize ao criar o container o parametro ‘ – – restart = {valor} ‘ veja seus valores:

no Não reinicia o contêiner automaticamente. (o padrão)
on-failure Reinicie o contêiner se ele sair devido a um erro, que se manifesta como um código de saída diferente de zero.
unless-stopped Reinicie o contêiner, a menos que seja explicitamente interrompido ou o próprio Docker esteja parado ou reiniciado.
always Sempre reinicie o contêiner se ele parar.

Caso seu container já esteja criado realize o update da seguinte maneira:

docker update –restart=always 0576df221c0b

Fonte: https://docs.docker.com/config/containers/start-containers-automatically/#use-a-restart-policy