activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Victor Romero <victor.rom...@gmail.com>
Subject Re: [DISCUSS IDEA] artemis create --docker
Date Thu, 01 Oct 2015 05:23:54 GMT
Llet me try to clarify how docker works and which are its expectations:

There are three outstanding moving pieces in docker:

   - *Docker container*, an instance of a docker image.
   - *Docker images* are *self contained images* of a piece of software,
   its dependencies, end everything else down to the operating system.
   - *DockerFiles*, the recipe to generate a docker image.

Two important best practices
<https://docs.docker.com/articles/dockerfile_best-practices/> regarding
creation of containers are:

   - Containers should be ephemeral, it can be stopped and destroyed and a
   new one built and put in place with an absolute minimum of set-up and
   configuration.
   - Run only one process per container.

Docker containers are customized tipically in two ways:

   - Changing some simple value, like the number of threads of a listener:
   with a passed environment property, i.e: -e HTTP_LISTENERS=64
   - Changing actual files/directories both for input/output from/to the
   image: with mounted volumes
   <https://docs.docker.com/userguide/dockervolumes/>. An example of out
   would be mounting a logs directory and an example for input, we could say,
   mounting the apps directory of tomcat, i.e: -v /webapp training/webapp

There is a repository of docker images, similar to what maven central is
for maven, and this is dockerhub <https://hub.docker.com/>. The docker
command like has full support for it. Software providers can provide an
official docker image just like in maven central. On example could be the
official RabbitMQ <https://hub.docker.com/_/rabbitmq/> docker image that
has been there for a while. Of course users do prefer official images but
they tipically coexist with a bunch of other community images.

If we don't go creative, the tipical case for a docker image is just an
image that allows configuration to some extent using environment properties
and some volumes mounted. This is exactly what I tried to accomplish the
image <https://hub.docker.com/r/vromero/activemq-artemis/> I recently
uploaded to dockerhub.

*All this said, is there space for improvement?*

I'm afraid I kind of disagree with you in believeing there is value on
the artemis
create phase. There is very little  customization at that point and very
little to no value at all would be added by generating a docker image at
this phase, i.e: Why not just have an official docker image published in
dockerhub that would have the very same effect with much less tooling and
non standard procedures involved?

*What about creating an image of an already customized instance?*

This would be having a base docker image all ready except for the artemis
intance, and then create an image with the instance on top of it.

I think there is some value on this but to be completely honest, this goes
against the common use of docker. The software and the very basic
configuration tipically reside on the image, and the hard core
configuration comes in the form of a mount point.

I'm on the fence around this one, perhaps there is some value, but at this
point I would rather say that it's better to not to go against the flow and
do something that is considered incorrect by the docker community.

*What would I personally do (docker related) with artemis:*

Personally I would create one or two images, the one I already created and
potentially another one customized for clustering.

I would pack this image, and tomcat and one of the artemis examples and
create a docker compose <https://docs.docker.com/compose/> image.

Then I would publish this as official image
<https://github.com/docker-library/official-images/tree/master/library> to
dockerhub (I imagine this is not easy bureocracy wise) just like rabbit,
ubuntu, wordpress, mariadb and others and I would create oficial
documentation along with the rest of the documentation.

If someone has a customized artemis instance that he wants to shift to
docker, he can just create a docker container from the official image and
mount there the etc directory.

This is just a personal oppinion, I but hope it helps.








2015-09-30 10:58 GMT-07:00 Clebert Suconic <clebert.suconic@gmail.com>:

> Sorry, it took me a while to digest this
>
> > What do you think? Would perhaps make more sense to have someting in a
> jar
> than can be invoked from bash/cmd?
>
>
> Maybe I'm getting confused because I would need more time with docker...
>
> We have the ./artemis create method, I would prefer to have things over
> there.. as it makes simpler and more accessible to users...
>
>
> If someone did anything around it, maybe we could then import it on the CLI
> to make it simpler...
>
> Maybe part of create wouldn't make sense.. but maybe a docker CLI... makes
> more sense maybe.
>
>
> ./artemis docker ... options...
>
>
> which is a simple thing to be implemented through OUR CLI package.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message