You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2019/02/05 18:57:51 UTC

[activemq-artemis] 04/05: ARTEMIS-2245 Moving docker files under artemis-docker and other improvements

This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git

commit 02505fc004aafa96708af5987137cefa0af5fa45
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Mon Feb 4 18:49:59 2019 -0500

    ARTEMIS-2245 Moving docker files under artemis-docker and other improvements
---
 artemis-distribution/pom.xml                       | 11 ----
 .../src/main/assembly/docker-assembly.xml          | 40 ------------
 .../docker => artemis-docker}/Dockerfile-centos    |  7 +-
 .../docker => artemis-docker}/Dockerfile-ubuntu    |  7 +-
 .../docker-run.sh                                  |  6 ++
 .../prepare-docker.sh                              | 41 +++++++++---
 artemis-docker/readme.md                           | 75 ++++++++++++++++++++++
 docs/user-manual/en/SUMMARY.md                     |  1 -
 docs/user-manual/en/docker.md                      | 26 --------
 9 files changed, 118 insertions(+), 96 deletions(-)

diff --git a/artemis-distribution/pom.xml b/artemis-distribution/pom.xml
index 2618b09..89b3aed 100644
--- a/artemis-distribution/pom.xml
+++ b/artemis-distribution/pom.xml
@@ -264,17 +264,6 @@
                      <goal>single</goal>
                   </goals>
                </execution>
-               <execution>
-                  <id>docker</id>
-                  <configuration>
-                     <descriptor>src/main/assembly/docker-assembly.xml</descriptor>
-                     <tarLongFileMode>gnu</tarLongFileMode>
-                  </configuration>
-                  <phase>package</phase>
-                  <goals>
-                     <goal>single</goal>
-                  </goals>
-               </execution>
             </executions>
          </plugin>
       </plugins>
diff --git a/artemis-distribution/src/main/assembly/docker-assembly.xml b/artemis-distribution/src/main/assembly/docker-assembly.xml
deleted file mode 100644
index 054bd6b..0000000
--- a/artemis-distribution/src/main/assembly/docker-assembly.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements. See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License. You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
-
-   <id>docker</id>
-   <formats>
-      <format>dir</format>
-   </formats>
-   <includeBaseDirectory>false</includeBaseDirectory>
-
-   <fileSets>
-      <fileSet>
-         <directory>${activemq.basedir}/artemis-distribution/target/apache-artemis-${project.version}-bin/apache-artemis-${project.version}</directory>
-         <outputDirectory>/build/opt/activemq-artemis</outputDirectory>
-         <useDefaultExcludes>true</useDefaultExcludes>
-     </fileSet>
-      <fileSet>
-         <directory>src/main/resources/docker</directory>
-         <outputDirectory>/build</outputDirectory>
-         <useDefaultExcludes>true</useDefaultExcludes>
-      </fileSet>
-   </fileSets>
-</assembly>
diff --git a/artemis-distribution/src/main/resources/docker/Dockerfile-centos b/artemis-docker/Dockerfile-centos
similarity index 90%
rename from artemis-distribution/src/main/resources/docker/Dockerfile-centos
rename to artemis-docker/Dockerfile-centos
index bfcfb2d..b76c8e3 100644
--- a/artemis-distribution/src/main/resources/docker/Dockerfile-centos
+++ b/artemis-docker/Dockerfile-centos
@@ -19,7 +19,6 @@
 
 FROM jboss/base-jdk:8
 LABEL maintainer="Apache ActiveMQ Team"
-LABEL ARTEMIS_VERSION="2.7.0-SNAPSHOT"
 # Make sure pipes are considered to determine success, see: https://github.com/hadolint/hadolint/wiki/DL4006
 SHELL ["/bin/bash", "-o", "pipefail", "-c"]
 WORKDIR /opt
@@ -39,7 +38,7 @@ RUN yum install -y libaio && \
 
 USER artemis
 
-COPY "/opt/activemq-artemis/" "/opt/activemq-artemis"
+ADD . /opt/activemq-artemis
 
 # Web Server
 EXPOSE 8161 \
@@ -60,7 +59,7 @@ USER root
 
 RUN mkdir /var/lib/artemis-instance && chown -R artemis.artemis /var/lib/artemis-instance
 
-COPY assets/docker-entrypoint.sh /
+COPY ./docker/docker-run.sh /
 
 USER artemis
 
@@ -68,5 +67,5 @@ USER artemis
 VOLUME ["/var/lib/artemis-instance"]
 WORKDIR /var/lib/artemis-instance
 
-ENTRYPOINT ["/docker-entrypoint.sh"]
+ENTRYPOINT ["/docker-run.sh"]
 CMD ["artemis-server"]
\ No newline at end of file
diff --git a/artemis-distribution/src/main/resources/docker/Dockerfile-ubuntu b/artemis-docker/Dockerfile-ubuntu
similarity index 91%
rename from artemis-distribution/src/main/resources/docker/Dockerfile-ubuntu
rename to artemis-docker/Dockerfile-ubuntu
index 4946e92..a141cc0 100644
--- a/artemis-distribution/src/main/resources/docker/Dockerfile-ubuntu
+++ b/artemis-docker/Dockerfile-ubuntu
@@ -19,7 +19,6 @@
 
 FROM openjdk:8
 LABEL maintainer="Apache ActiveMQ Team"
-LABEL ARTEMIS_VERSION="2.7.0-SNAPSHOT"
 # Make sure pipes are considered to determine success, see: https://github.com/hadolint/hadolint/wiki/DL4006
 SHELL ["/bin/bash", "-o", "pipefail", "-c"]
 WORKDIR /opt
@@ -39,7 +38,7 @@ RUN apt-get -qq -o=Dpkg::Use-Pty=0 update && \
 
 USER artemis
 
-COPY "/opt/activemq-artemis/" "/opt/activemq-artemis"
+ADD . /opt/activemq-artemis
 
 # Web Server
 EXPOSE 8161 \
@@ -60,7 +59,7 @@ USER root
 
 RUN mkdir /var/lib/artemis-instance && chown -R artemis.artemis /var/lib/artemis-instance
 
-COPY assets/docker-entrypoint.sh /
+COPY ./docker/docker-run.sh /
 
 USER artemis
 
@@ -68,5 +67,5 @@ USER artemis
 VOLUME ["/var/lib/artemis-instance"]
 WORKDIR /var/lib/artemis-instance
 
-ENTRYPOINT ["/docker-entrypoint.sh"]
+ENTRYPOINT ["/docker-run.sh"]
 CMD ["artemis-server"]
\ No newline at end of file
diff --git a/artemis-distribution/src/main/resources/docker/assets/docker-entrypoint.sh b/artemis-docker/docker-run.sh
similarity index 91%
copy from artemis-distribution/src/main/resources/docker/assets/docker-entrypoint.sh
copy to artemis-docker/docker-run.sh
index 4d2385b..9e7bdb4 100755
--- a/artemis-distribution/src/main/resources/docker/assets/docker-entrypoint.sh
+++ b/artemis-docker/docker-run.sh
@@ -16,6 +16,12 @@
 # specific language governing permissions and limitations
 # under the License.
 
+
+
+# This is the entry point for the docker images.
+# This file is executed when docker run is called.
+
+
 set -e
 
 BROKER_HOME=/var/lib/
diff --git a/artemis-distribution/src/main/resources/docker/assets/docker-entrypoint.sh b/artemis-docker/prepare-docker.sh
similarity index 55%
rename from artemis-distribution/src/main/resources/docker/assets/docker-entrypoint.sh
rename to artemis-docker/prepare-docker.sh
index 4d2385b..7fa474a 100755
--- a/artemis-distribution/src/main/resources/docker/assets/docker-entrypoint.sh
+++ b/artemis-docker/prepare-docker.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
 # distributed with this work for additional information
@@ -16,20 +16,41 @@
 # specific language governing permissions and limitations
 # under the License.
 
+# Setting the script to fail if anything goes wrong
 set -e
 
-BROKER_HOME=/var/lib/
-CONFIG_PATH=$BROKER_HOME/etc
-export BROKER_HOME OVERRIDE_PATH CONFIG_PATH
+#This is a script to Prepare an artemis folder to generate the Release.
 
-echo CREATE_ARGUMENTS=${CREATE_ARGUMENTS}
 
-if ! [ -f ./etc/broker.xml ]; then
-    /opt/activemq-artemis/bin/artemis create ${CREATE_ARGUMENTS} .
-else
-    echo "broker already created, ignoring creation"
+error () {
+   echo ""
+   echo "$@"
+   echo ""
+   echo "Usage: ./prepare-docker.sh ARTEMIS_HOME_LOCATION"
+   echo ""
+   echo "example:"
+   echo "./prepare-release.sh https://repo1.maven.org/maven2 2.5.0"
+   echo ""
+   exit 64
+}
+
+if [ ! "$#" -eq 1 ]
+then
+   error "Cannot match arguments"
 fi
 
-./bin/artemis run
+target=$1
+
+if [ ! -d $target ]
+then
+  error "Directory $target does not exist"
+fi
 
+if [ -d $target/docker ]
+then
+  rm -rf $target/docker
+fi
+mkdir $target/docker
+cp * $target/docker
 
+echo "Docker file support files at : $target/docker"
diff --git a/artemis-docker/readme.md b/artemis-docker/readme.md
new file mode 100644
index 0000000..055e4be
--- /dev/null
+++ b/artemis-docker/readme.md
@@ -0,0 +1,75 @@
+# Docker Image Example *
+
+This is an example on how you could create your own Docker Image For Apache ActiveMQ Artemis based on CentOS or Ubuntu.
+# Preparing
+
+Use the script ./prepare-docker.sh as it will copy the docker files under the binary distribution.
+
+```
+$ ./prepare.sh $ARTEMIS_HOME
+```
+
+# Building
+
+Go to $ARTEMIS_HOME where you prepared the binary with Docker files.
+
+## For Ubuntu:
+
+From within the $ARTEMIS_HOME
+```
+$ docker build -f ./docker/Dockerfile-ubuntu -t artemis-ubuntu .
+```
+
+**Note:**
+-t artemis-ubuntu` is just a tag name for the purpose of this guide
+
+## For CentOS
+
+From within the binary distribution folder:
+```
+$ docker build -f ./docker/Dockerfile-centos -t artemis-centos .
+```
+
+# Variables:
+
+ - ARTEMIS_USER 
+ - ARTEMIS_PASSWORD
+ - ANONYMOUS_LOGIN
+
+Default here is FALSE. If you set this to true, it will change security settings passed on the broker instance creation.
+
+- CREATE_ARGUMENTS
+
+Default here is " --user ${ARTEMIS_USER} --password ${ARTEMIS_PASSWORD} --silent --http-host 0.0.0.0 --relax-jolokia"
+
+
+This will be passed straight to ./artemis create during the execution.
+
+
+# Mapping point
+
+- /var/lib/artemis-instance
+
+It's possible to map a folder as the instance broker.
+This will hold the configuration and the data of the running broker. This is useful for when you want the data persisted outside of a container.
+
+
+# Lifecycle of the execution
+
+A broker instance will be created during the execution of the instance. If you pass a mapped folder for /var/lib/artemis-instance an image will be created or reused depending on the contents of the folder.
+
+
+
+## Running a CentOS image
+
+The image just created in the previous step allows both stateless or stateful runs.
+The stateless run is achieved by:
+```
+$ docker run --rm -it -p 61616:61616 -p 8161:8161 artemis-centos 
+```
+The image will also support mapped folders and mapped ports. To run the image with the instance persisted on the host:
+```
+docker run -it -p 61616:61616 -p 8161:8161 -v <broker folder on host>:/var/lib/artemis-instance artemis-centos 
+```
+where `<broker folder on host>` is a folder where the broker instance is supposed to 
+be saved and reused on each run.
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 3243b54..0aa3085 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -72,5 +72,4 @@
 * [Maven Plugin](maven-plugin.md)
 * [Unit Testing](unit-testing.md)
 * [Troubleshooting and Performance Tuning](perf-tuning.md)
-* [Docker support](docker.md)
 * [Configuration Reference](configuration-index.md)
diff --git a/docs/user-manual/en/docker.md b/docs/user-manual/en/docker.md
deleted file mode 100644
index 5dfcf55..0000000
--- a/docs/user-manual/en/docker.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Artemis on Docker
-
-Artemis provide support to build CentOS and Ubuntu images of the broker, allowing to reuse 
-an existing broker instance *ie from a previous image run* or just creating a fresh new one.
-
-## Building a CentOS image
-From within the folder with both `Dockerfile-centos` file and `assets` folder:
-```
-$ docker build -f Dockerfile-centos -t artemis-centos .
-```
-> **Note:**
->`-t artemis-centos` is just a tag name for the purpose of this guide
-## Running a CentOS image
-The image just created in the previous step allows both stateless or stateful runs.
-The stateless run is achieved by:
-```
-$ docker run --rm -it -p 61616:61616 -p 8161:8161 artemis-centos 
-```
-While a stateful run with:
-```
-docker run -it -p 61616:61616 -p 8161:8161 -v <broker folder on host>:/var/lib/artemis-instance artemis-centos 
-```
-where `<broker folder on host>` is a folder where the broker instance is supposed to 
-be saved and reused on each run.
-
-