GithubHelp home page GithubHelp logo

activemq-artemis-broker-image's Introduction

ActiveMQ Artemis broker container image

License

See LICENSE file.

How to build

CEKit is used to build the image. To build simply run:

cekit build podman

Repository

The ActiveMQ Artemis broker container images are pushed to https://quay.io/repository/artemiscloud/activemq-artemis-broker

Tags

The ActiveMQ Artemis broker container images have release tags and special tags.

The image release tags point to images built from the sources of the releated release tags, i.e. the 1.0.0 image release tag points to the image built from the sources of the v1.0.0 release tag

The image special tags are:

  • artemis.ARTEMIS_VERSION - points to the image built from the sources of a release tag. ie: artemis.2.31.2

  • latest - points to the image built from the sources of the latest release tag.

  • - dev.DATE.COMMIT_ID - points to the image built from the sources of the main branch on specific date and commit id, it should be used only for development purposes. ie: dev.20231106.8dbe9eb. It expires in 3 months

  • dev.latest - points to the image built from the latest sources of the main branch, it should be used only for development purposes and it is regenerated on each commit on main branch.

  • snapshot - points to the image built from the latest sources of the main branch and contains the snapshot version of ActiveMQ Artemis

activemq-artemis-broker-image's People

Contributors

andytaylor avatar artemiscloud-bot avatar botje avatar brusdev avatar dependabot[bot] avatar gaohoward avatar goldmann avatar howardgao avatar kyguy avatar mkrutov avatar roddiekieley avatar rwngwn avatar sknot-rh avatar tlbueno avatar vbusch avatar wdecoste avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

activemq-artemis-broker-image's Issues

launch.sh does not recognize previously-created broker directories

Describe the bug
Line 15 of launch.sh is supposed to prevent the broker from running its initial configuration again, but it tests for the directory BROKER while line 39 of the same script creates a lower-case directory broker

To Reproduce
Steps to reproduce the behavior:

  1. Run the image with /home/jboss mounted to a Kubernetes volume or host directory
  2. Run the image again. The broker is reconfigured instead of using the configuration present in the volume.

Platform (please complete the following information):

  • OS: [e.g. Fedora] macOS
  • Version [e.g. 32] 13.0.1
  • CEKit version [e.g. 3.5.0] 4.5.0
  • Container build tool [e.g. podman] Docker, although I used prebuilt images from quay.io

Updated utilized JDK version to at least 11

Is your feature request related to a problem? Please describe.
Prior to and since the base broker container image was first made available a number or progressive JDK updates have happened. At the moment the base is utilizing the now older v8 JDK while the JDK development has since moved on to 11 through 17 at least.

Describe the solution you'd like
At a minimum the configuration and utilization of the v8 JDK should be retired, with a new minimum of 11 being introduced depending on platform availability. Ideally a move to v17 could be made, however that may not be universally available across all platforms.

apt-get install is failing on github action workflow

Describe the bug
apt-get install is failing on github action workflow because the mirror list is not updated

To Reproduce
Execute ci or release workflow

Platform (please complete the following information):
N/A

Expected behavior
Have the workflow executed without errors

Screenshots
N/A

Additional context
apt-get install may fail if it is used directly without update the mirror list with apt-get update

Image cannot be run with docker, only podman works

Describe the bug

The image created in this repository can only be run with podman. On docker, the artemis broker binary is missing.

To Reproduce

~ via ๎œ˜ v18.5.0 via ๐Ÿ v3.10.5 โ˜ธ xxx-production (applications) took 18s 
โฏ docker run -it -e AMQ_USER=admin -e AMQ_PASSWORD=admin --rm quay.io/artemiscloud/activemq-artemis-broker:1.0.6
Creating Broker with args --user XXXXX --password XXXXX --role admin --name broker --allow-anonymous --http-host 172.17.1.2 --host 172.17.1.2   --force
Unable to create the path 'broker'.

usage: artemis <command> [<args>]

The most commonly used artemis commands are:
    address    Address tools group (create|delete|update|show) (example ./artemis address create)
    browser    It will browse messages on an instance
    check      Check tools group (node|queue) (example ./artemis check node)
    consumer   It will consume messages from an instance
    create     creates a new broker instance
    data       data tools group (print|recover) (example ./artemis data print)
    help       Display help information
    mask       mask a password and print it out
    perf       Perf tools group (example ./artemis perf client)
    producer   It will send messages to an instance
    queue      Queue tools group (create|delete|update|stat|purge) (example ./artemis queue create)
    transfer   Moves Messages from one destination towards another destination
    version    print version information

See 'artemis help <command>' for more information on a specific command.

Running Broker
/opt/amq/bin/launch.sh: line 47: /home/jboss/broker/bin/artemis: No such file or directory

~ via ๎œ˜ v18.5.0 via ๐Ÿ v3.10.5 โ˜ธ xxx-production (applications) 
โฏ podman run -it -e AMQ_USER=admin -e AMQ_PASSWORD=admin --rm quay.io/artemiscloud/activemq-artemis-broker:1.0.6
Creating Broker with args --user XXXXX --password XXXXX --role admin --name broker --allow-anonymous --http-host 10.0.2.100 --host 10.0.2.100   --force
Creating ActiveMQ Artemis instance at: /home/jboss/broker

Auto tuning journal ...
done! Your system can make 62.5 writes per millisecond, your journal-buffer-timeout will be 16000

You can now start the broker by executing:  

   "/home/jboss/broker/bin/artemis" run

Or you can run the broker in the background using:

   "/home/jboss/broker/bin/artemis-service" start

Running Broker
     _        _               _
    / \  ____| |_  ___ __  __(_) _____
   / _ \|  _ \ __|/ _ \  \/  | |/  __/
  / ___ \ | \/ |_/  __/ |\/| | |\___ \
 /_/   \_\|   \__\____|_|  |_|_|/___ /
 Apache ActiveMQ Artemis 2.23.0


Jul 08, 2022 11:41:26 AM java.lang.System$LoggerFinder lambda$accessProvider$0
WARNING: Failed to instantiate LoggerFinder provider; Using default.
2022-07-08 11:41:26,581 INFO  [org.apache.activemq.artemis.integration.bootstrap] AMQ101000: Starting ActiveMQ Artemis Server

Platform (please complete the following information):

  • OS: archlinix
  • Version rolling
  • CEKit version ?
  • Container build tool docker

Expected behavior

The image works in podman and docker

Additional context

Things work in docker when passing --user=root.

Add PR commit message check to workflow

Is your feature request related to a problem? Please describe.
Add check on commit messages of PR to make sure each begin with a issue number
[#nnn] or [NO-ISSUE]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
Optional. A clear and concise description of any alternative solutions or features you've considered.

Additional context
Optional. Add any other context or screenshots about the feature request here.

Cannot initialize queue:Function not implemented

Describe the bug
Not able to launch the Basic Broker Image on Mac Apple M1 Pro Ventura 13.4.

To Reproduce
Steps to reproduce the behavior:

  1. Get Docker running
  2. Use this command:
docker run -e AMQ_USER=artemisuser -e AMQ_PASSWORD=artemispwd --name project-artemis --platform linux/x86_64 -p 80:8161 -p 61616:61616 quay.io/artemiscloud/activemq-artemis-broker:dev.latest

Platform (please complete the following information):

  • Mac Apple M1 Pro
  • Ventura 13.4
  • Docker

Expected behavior
Above command should deploy the image on the tutorial.

Screenshots
Screenshot 2023-06-14 at 07 47 34

Additional context
The error during docker run is:

Cannot initialize queue:Function not implemented

After running the container, it can *only* be accessed with a particular IP address

I've described this issue on stackoverflow. An answer says this is by design, so I'm posting here.

Short version

When I run ActiveMQ Artemis in docker I see this basically empty screen:

empty screen

That doesn't look right... I was expecting this, like I get when using the zip file:

normal-looking activemq screen

Regardless of whether I use docker or the zip file, it doesn't matter what username or password I enter, I just get logged in regardless, which is a little concerning...

Quickly deploy a basic Container image that runs the broker suggests I should now be able to access the console as: http://localhost:8161/console/ , but an answer on stackoverflow suggest that I must use the URL printed in the log: http://172.17.0.3:8161/console .

If that is true, that is a problem because that URL is not accessible using Docker for Windows. Only http://localhost:8161/console and using the IP of the windows host.

I'm guessing this restriction is because launch.sh line 16 has ... --http-host $BROKER_IP ... and a previous line has: export BROKER_IP=\hostname -I | cut -f 1 -d ' '`` :-(

It is also possible, that the empty screen has a completely different cause. But I think the empty screen is a problem whatever the cause.

Longer Version

I'm attempting a "Hello World" style installation of ActiveMQ. It sounds like ActiveMQ Artemis is what I should be using. We'll be using this on Kubernetes, so I found and have followed https://artemiscloud.io/. There is a Quickly deploy a basic Container image that runs the broker right there on the front page. It suggests:

docker run -e AMQ_USER=admin -e AMQ_PASSWORD=admin -p80:8161 --name artemis quay.io/artemiscloud/activemq-artemis-broker:dev.latest

I changed the port to -p8161:8161 and run it using Docker for Windows. Visiting http://localhost:8161/console/ shows me the first screenshot above.

If I instead download from https://activemq.apache.org/components/artemis/download/ and follow https://activemq.apache.org/components/artemis/documentation/latest/using-server.html I get the second screenshot.

Regardless of whether I use docker or the zip file, it doesn't matter what username or password I enter, I just get logged in regardless.

Full docker console log

ยป docker run -e AMQ_USER=admin -e AMQ_PASSWORD=admin -p8161:8161 --name artemis quay.io/artemiscloud/activemq-artemis-broker:latest
Creating Broker with args --user XXXXX --password XXXXX --role admin --name broker --allow-anonymous --http-host 172.17.0.3 --host 172.17.0.3   --force
Creating ActiveMQ Artemis instance at: /home/jboss/broker

Auto tuning journal ...
done! Your system can make 1.44 writes per millisecond, your journal-buffer-timeout will be 696000

You can now start the broker by executing:  

   "/home/jboss/broker/bin/artemis" run

Or you can run the broker in the background using:

   "/home/jboss/broker/bin/artemis-service" start

Running Broker
     _        _               _
    / \  ____| |_  ___ __  __(_) _____
   / _ \|  _ \ __|/ _ \  \/  | |/  __/
  / ___ \ | \/ |_/  __/ |\/| | |\___ \
 /_/   \_\|   \__\____|_|  |_|_|/___ /
 Apache ActiveMQ Artemis 2.17.0


2021-05-27 21:23:44,556 INFO  [org.apache.activemq.artemis.integration.bootstrap] AMQ101000: Starting ActiveMQ Artemis Server
2021-05-27 21:23:44,605 INFO  [org.apache.activemq.artemis.core.server] AMQ221000: live Message Broker is starting with configuration Broker Configuration (clustered=false,journalDirectory=data/journal,bindingsDirectory=data/bindings,largeMessagesDirectory=data/large-messages,pagingDirectory=data/paging)
2021-05-27 21:23:44,650 INFO  [org.apache.activemq.artemis.core.server] AMQ221012: Using AIO Journal
2021-05-27 21:23:44,694 INFO  [org.apache.activemq.artemis.core.server] AMQ221057: Global Max Size is being adjusted to 1/2 of the JVM max size (-Xmx). being defined as 1,073,741,824
2021-05-27 21:23:44,712 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-server]. Adding protocol support for: CORE
2021-05-27 21:23:44,712 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-amqp-protocol]. Adding protocol support for: AMQP
2021-05-27 21:23:44,713 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-hornetq-protocol]. Adding protocol support for: HORNETQ
2021-05-27 21:23:44,713 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-mqtt-protocol]. Adding protocol support for: MQTT
2021-05-27 21:23:44,713 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-openwire-protocol]. Adding protocol support for: OPENWIRE
2021-05-27 21:23:44,714 INFO  [org.apache.activemq.artemis.core.server] AMQ221043: Protocol module found: [artemis-stomp-protocol]. Adding protocol support for: STOMP
2021-05-27 21:23:44,759 INFO  [org.apache.activemq.artemis.core.server] AMQ221034: Waiting indefinitely to obtain live lock
2021-05-27 21:23:44,760 INFO  [org.apache.activemq.artemis.core.server] AMQ221035: Live Server Obtained live lock
2021-05-27 21:23:44,832 INFO  [org.apache.activemq.artemis.core.server] AMQ221080: Deploying address DLQ supporting [ANYCAST]
2021-05-27 21:23:44,839 INFO  [org.apache.activemq.artemis.core.server] AMQ221003: Deploying ANYCAST queue DLQ on address DLQ
2021-05-27 21:23:44,880 INFO  [org.apache.activemq.artemis.core.server] AMQ221080: Deploying address ExpiryQueue supporting [ANYCAST]
2021-05-27 21:23:44,882 INFO  [org.apache.activemq.artemis.core.server] AMQ221003: Deploying ANYCAST queue ExpiryQueue on address ExpiryQueue
2021-05-27 21:23:45,148 INFO  [org.apache.activemq.artemis.core.server] AMQ221020: Started EPOLL Acceptor at 172.17.0.3:61616 for protocols [CORE,MQTT,AMQP,STOMP,HORNETQ,OPENWIRE]
2021-05-27 21:23:45,152 INFO  [org.apache.activemq.artemis.core.server] AMQ221020: Started EPOLL Acceptor at 172.17.0.3:5445 for protocols [HORNETQ,STOMP]
2021-05-27 21:23:45,155 INFO  [org.apache.activemq.artemis.core.server] AMQ221020: Started EPOLL Acceptor at 172.17.0.3:5672 for protocols [AMQP]
2021-05-27 21:23:45,158 INFO  [org.apache.activemq.artemis.core.server] AMQ221020: Started EPOLL Acceptor at 172.17.0.3:1883 for protocols [MQTT]
2021-05-27 21:23:45,162 INFO  [org.apache.activemq.artemis.core.server] AMQ221020: Started EPOLL Acceptor at 172.17.0.3:61613 for protocols [STOMP]
2021-05-27 21:23:45,167 INFO  [org.apache.activemq.artemis.core.server] AMQ221007: Server is now live
2021-05-27 21:23:45,168 INFO  [org.apache.activemq.artemis.core.server] AMQ221001: Apache ActiveMQ Artemis Message Broker version 2.17.0 [broker, nodeID=d1043ae4-bf31-11eb-8c49-0242ac110003] 
2021-05-27 21:23:45,379 INFO  [org.apache.activemq.hawtio.branding.PluginContextListener] Initialized activemq-branding plugin
2021-05-27 21:23:45,413 INFO  [org.apache.activemq.hawtio.plugin.PluginContextListener] Initialized artemis-plugin plugin
2021-05-27 21:23:45,625 INFO  [io.hawt.HawtioContextListener] Initialising hawtio services
2021-05-27 21:23:45,636 INFO  [io.hawt.system.ConfigManager] Configuration will be discovered via system properties
2021-05-27 21:23:45,638 INFO  [io.hawt.jmx.JmxTreeWatcher] Welcome to Hawtio 2.11.0
2021-05-27 21:23:45,643 INFO  [io.hawt.web.auth.AuthenticationConfiguration] Starting hawtio authentication filter, JAAS realm: "activemq" authorized role(s): "admin" role principal classes: "org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal"
2021-05-27 21:23:45,656 INFO  [io.hawt.web.proxy.ProxyServlet] Proxy servlet is disabled
2021-05-27 21:23:45,660 INFO  [io.hawt.web.servlets.JolokiaConfiguredAgentServlet] Jolokia overridden property: [key=policyLocation, value=file:/home/jboss/broker/etc/jolokia-access.xml]
2021-05-27 21:23:45,727 INFO  [org.apache.activemq.artemis] AMQ241001: HTTP Server started at http://172.17.0.3:8161
2021-05-27 21:23:45,727 INFO  [org.apache.activemq.artemis] AMQ241002: Artemis Jolokia REST API available at http://172.17.0.3:8161/console/jolokia
2021-05-27 21:23:45,728 INFO  [org.apache.activemq.artemis] AMQ241004: Artemis Console available at http://172.17.0.3:8161/console
2021-05-27 21:23:54,289 INFO  [io.hawt.web.auth.LoginServlet] Hawtio login is using 1800 sec. HttpSession timeout
2021-05-27 21:23:54,968 INFO  [io.hawt.web.auth.keycloak.KeycloakServlet] Keycloak integration is disabled
2021-05-27 21:24:00,270 INFO  [io.hawt.web.auth.LoginServlet] Logging in user: admin

Update cct_module to 0.38.0-artemiscloud-1

Is your feature request related to a problem? Please describe.
The activemq-artemis-broker-kubernetes-image is using the Cloud Enablement module version 0.38.0-artemiscloud-1.

Describe the solution you'd like
Set the same Cloud Enablement module version used by activemq-artemis-broker-kubernetes-image.

Create release tags without prefix

The release tags start with the prefix v i.e. v1.0.0 while the container image tags have no prefix.
This mismatch cause confusion, could you create the release tags without prefix?

Artemis Broker image is not exposing any Ports

Describe the bug
When running the resulting container image, there is no default port exposed

To Reproduce
Steps to reproduce the behavior:
docker run -P container-image

Platform (please complete the following information):

  • OS: Mac OSX

Expected behavior
The container should expose the default ports.

Screenshots
Optional, add screenshots to help explain your problem.

Additional context
Optional. Add any other context about the problem here.

Add dependabot into repo

Enable github dependabot to verify which dependencies can be updated daily.
On this repo, currently only the github actions will be verified as the docker image is build using CEKit and the Container file is not available.

Allow defining addresses and queues for local testing

Background

In the process of migrating away from image vromero/actiemq-artemis, for local deployment via docker-compose, I tried to define addresses and queue on application startup, but was not able to. It would be nice to have this capability.

The exact method on providing the queues needed is secondary, as long as it is convenient enough to be used in a docker-compose.yml and flexible enough to allow common use cases.

Story

As a user who uses this image for local deployment
When I need to define pre-defined addresses and queues
Then I can define the addresses and queues needed.

Running on Fedora 33 with podman requires running with sudo

Describe the bug
Running on an Fedora 33 box where by default you can run podman rootless instead of sudo podman. Running with sudo podman allows one to expose a protocol acceptor port via -p containerport:hostport and then you can connect to hostport with no problems. However running without sudo results in an inaccessible broker although it's running in the container.

To Reproduce
Steps to reproduce the behavior:

  1. Get f33
  2. podman run -it -e ... -p containerport:hostport quay.io/artemiscloud/activemq-artemis-broker:latest
  3. telnet hostip:hostport and try to talk STOMP

Platform (please complete the following information):

  • OS: Fedora
  • Version 33
  • CEKit version n/a
  • Container build tool: podman

Expected behavior
When running the base broker container image I expect to be able to run it locally and easily connect either another container to it, or connect from the host itself.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.