ARTEMIS-2245 Moving docker files under artemis-docker and other improvements
This commit is contained in:
parent
8c89c3584f
commit
02505fc004
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -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"]
|
|
@ -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"]
|
|
@ -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/
|
|
@ -0,0 +1,56 @@
|
|||
#!/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
|
||||
# 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.
|
||||
|
||||
# Setting the script to fail if anything goes wrong
|
||||
set -e
|
||||
|
||||
#This is a script to Prepare an artemis folder to generate the Release.
|
||||
|
||||
|
||||
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
|
||||
|
||||
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"
|
|
@ -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.
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
Loading…
Reference in New Issue