You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/02/26 20:43:20 UTC
[incubator-pulsar] branch master updated: Mavenize docker images
(#1284)
This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 9656c06 Mavenize docker images (#1284)
9656c06 is described below
commit 9656c069ef2608e16b102c0b71cc9863e84cdc69
Author: Ivan Kelly <iv...@apache.org>
AuthorDate: Mon Feb 26 21:43:18 2018 +0100
Mavenize docker images (#1284)
* Mavenize docker images
Build pulsar docker images with maven. This will make it easier to
pull them in as a base for the maven integration tests.
I didn't touch the publish script, because it has handling for private
registries which I wasn't able to test.
* Fix licenses
---
all/pom.xml | 9 +-
dashboard/pom.xml | 93 ++++++++++++++++
docker/build.sh | 42 +------
docker/grafana/pom.xml | 92 +++++++++++++++
docker/pom.xml | 42 +++++++
docker/{ => pulsar}/Dockerfile | 6 +-
docker/pulsar/pom.xml | 124 +++++++++++++++++++++
.../{ => pulsar}/scripts/apply-config-from-env.py | 0
.../scripts/generate-zookeeper-config.sh | 0
.../{ => pulsar}/scripts/pulsar-zookeeper-ruok.sh | 0
10 files changed, 364 insertions(+), 44 deletions(-)
diff --git a/all/pom.xml b/all/pom.xml
index f4a65a5..56d4a68 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -128,7 +128,7 @@
<goal>single</goal>
</goals>
<configuration>
- <attach>false</attach>
+ <attach>true</attach>
<tarLongFileMode>posix</tarLongFileMode>
<finalName>apache-pulsar-${project.version}</finalName>
<descriptors>
@@ -139,6 +139,13 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/dashboard/pom.xml b/dashboard/pom.xml
new file mode 100644
index 0000000..78734c3
--- /dev/null
+++ b/dashboard/pom.xml
@@ -0,0 +1,93 @@
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>docker-images</artifactId>
+ <version>2.0.0-incubating-SNAPSHOT</version>
+ <relativePath>../docker</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>dashboard-docker-image</artifactId>
+ <name>Apache Pulsar :: Docker Images :: Pulsar Dashboard</name>
+ <packaging>pom</packaging>
+
+ <profiles>
+ <profile>
+ <id>docker</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <version>${dockerfile-maven.version}</version>
+ <executions>
+ <execution>
+ <id>default</id>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>add-no-repo-tag-and-version</id>
+ <goals>
+ <goal>tag</goal>
+ </goals>
+ <configuration>
+ <repository>pulsar-dashboard</repository>
+ <tag>${project.version}</tag>
+ </configuration>
+ </execution>
+ <execution>
+ <id>add-no-repo-tag-and-latest</id>
+ <goals>
+ <goal>tag</goal>
+ </goals>
+ <configuration>
+ <repository>pulsar-dashboard</repository>
+ <tag>latest</tag>
+ </configuration>
+ </execution>
+ <execution>
+ <id>tag-and-push-latest</id>
+ <goals>
+ <goal>tag</goal>
+ <goal>push</goal>
+ </goals>
+ <configuration>
+ <repository>${docker.organization}/pulsar-dashboard</repository>
+ <tag>latest</tag>
+ </configuration>
+ </execution>
+ </executions>
+ <configuration>
+ <repository>${docker.organization}/pulsar-dashboard</repository>
+ <tag>${project.version}</tag>
+ <pullNewerImage>false</pullNewerImage>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/docker/build.sh b/docker/build.sh
index eb707a2..0c35171 100755
--- a/docker/build.sh
+++ b/docker/build.sh
@@ -21,44 +21,6 @@
ROOT_DIR=$(git rev-parse --show-toplevel)
cd $ROOT_DIR/docker
-MVN_VERSION=`./get-version.sh`
+mvn package -Pdocker
+mvn -f ../dashboard/pom.xml package -Pdocker
-echo "Pulsar version: ${MVN_VERSION}"
-
-PULSAR_TGZ=$(dirname $PWD)/all/target/apache-pulsar-${MVN_VERSION}-bin.tar.gz
-
-if [ ! -f $PULSAR_TGZ ]; then
- echo "Pulsar bin distribution not found at ${PULSAR_TGZ}"
- exit 1
-fi
-
-LINKED_PULSAR_TGZ=apache-pulsar-${MVN_VERSION}-bin.tar.gz
-ln -f ${PULSAR_TGZ} $LINKED_PULSAR_TGZ
-
-echo "Using Pulsar binary package at ${PULSAR_TGZ}"
-
-# Build base image, reused by all other components
-docker build --build-arg VERSION=${MVN_VERSION} \
- -t pulsar:latest .
-
-if [ $? != 0 ]; then
- echo "Error: Failed to create Docker image for pulsar"
- exit 1
-fi
-
-rm apache-pulsar-${MVN_VERSION}-bin.tar.gz
-
-
-# Build pulsar-grafana image
-docker build -t pulsar-grafana:latest grafana
-if [ $? != 0 ]; then
- echo "Error: Failed to create Docker image for pulsar-grafana"
- exit 1
-fi
-
-# Build dashboard docker image
-docker build -t pulsar-dashboard:latest ../dashboard
-if [ $? != 0 ]; then
- echo "Error: Failed to create Docker image for pulsar-dashboard"
- exit 1
-fi
diff --git a/docker/grafana/pom.xml b/docker/grafana/pom.xml
new file mode 100644
index 0000000..450eb82
--- /dev/null
+++ b/docker/grafana/pom.xml
@@ -0,0 +1,92 @@
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>docker-images</artifactId>
+ <version>2.0.0-incubating-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>grafana-docker-image</artifactId>
+ <name>Apache Pulsar :: Docker Images :: Grafana</name>
+ <packaging>pom</packaging>
+
+ <profiles>
+ <profile>
+ <id>docker</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <version>${dockerfile-maven.version}</version>
+ <executions>
+ <execution>
+ <id>default</id>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>add-no-repo-and-version</id>
+ <goals>
+ <goal>tag</goal>
+ </goals>
+ <configuration>
+ <repository>pulsar-grafana</repository>
+ <tag>${project.version}</tag>
+ </configuration>
+ </execution>
+ <execution>
+ <id>add-no-repo-and-latest</id>
+ <goals>
+ <goal>tag</goal>
+ </goals>
+ <configuration>
+ <repository>pulsar-grafana</repository>
+ <tag>latest</tag>
+ </configuration>
+ </execution>
+ <execution>
+ <id>tag-and-push-latest</id>
+ <goals>
+ <goal>tag</goal>
+ <goal>push</goal>
+ </goals>
+ <configuration>
+ <repository>${docker.organization}/pulsar-grafana</repository>
+ <tag>latest</tag>
+ </configuration>
+ </execution>
+ </executions>
+ <configuration>
+ <repository>${docker.organization}/pulsar-grafana</repository>
+ <tag>${project.version}</tag>
+ <pullNewerImage>false</pullNewerImage>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/docker/pom.xml b/docker/pom.xml
new file mode 100644
index 0000000..2693bf7
--- /dev/null
+++ b/docker/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <packaging>pom</packaging>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>pulsar</artifactId>
+ <version>2.0.0-incubating-SNAPSHOT</version>
+ </parent>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>docker-images</artifactId>
+ <name>Apache Pulsar :: Docker Images</name>
+ <properties>
+ <dockerfile-maven.version>1.3.7</dockerfile-maven.version>
+ <docker.organization>apachepulsar</docker.organization>
+ </properties>
+ <modules>
+ <module>pulsar</module>
+ <module>grafana</module>
+ </modules>
+</project>
diff --git a/docker/Dockerfile b/docker/pulsar/Dockerfile
similarity index 92%
rename from docker/Dockerfile
rename to docker/pulsar/Dockerfile
index f9e6cd7..395f5a3 100644
--- a/docker/Dockerfile
+++ b/docker/pulsar/Dockerfile
@@ -22,10 +22,10 @@ FROM openjdk:8-jdk
# Install some utilities
RUN apt-get update && apt-get install -y netcat dnsutils
-ARG VERSION
+ARG PULSAR_TARBALL
-ADD apache-pulsar-${VERSION}-bin.tar.gz /
-RUN mv /apache-pulsar-${VERSION} /pulsar
+ADD ${PULSAR_TARBALL} /
+RUN mv /apache-pulsar-* /pulsar
COPY scripts/apply-config-from-env.py /pulsar/bin
COPY scripts/generate-zookeeper-config.sh /pulsar/bin
diff --git a/docker/pulsar/pom.xml b/docker/pulsar/pom.xml
new file mode 100644
index 0000000..63c42ca
--- /dev/null
+++ b/docker/pulsar/pom.xml
@@ -0,0 +1,124 @@
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>docker-images</artifactId>
+ <version>2.0.0-incubating-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>pulsar-docker-image</artifactId>
+ <name>Apache Pulsar :: Docker Images :: Pulsar Latest Version</name>
+ <packaging>pom</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>distribution</artifactId>
+ <version>${project.parent.version}</version>
+ <classifier>bin</classifier>
+ <type>tar.gz</type>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>docker</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <version>${dockerfile-maven.version}</version>
+ <executions>
+ <execution>
+ <id>default</id>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>add-no-repo-and-version</id>
+ <goals>
+ <goal>tag</goal>
+ </goals>
+ <configuration>
+ <repository>pulsar</repository>
+ <tag>${project.version}</tag>
+ </configuration>
+ </execution>
+ <execution>
+ <id>add-no-repo-and-latest</id>
+ <goals>
+ <goal>tag</goal>
+ </goals>
+ <configuration>
+ <repository>pulsar</repository>
+ <tag>latest</tag>
+ </configuration>
+ </execution>
+ <execution>
+ <id>tag-and-push-latest</id>
+ <goals>
+ <goal>tag</goal>
+ <goal>push</goal>
+ </goals>
+ <configuration>
+ <repository>${docker.organization}/pulsar</repository>
+ <tag>latest</tag>
+ </configuration>
+ </execution>
+ </executions>
+ <configuration>
+ <repository>${docker.organization}/pulsar</repository>
+ <pullNewerImage>false</pullNewerImage>
+ <tag>${project.version}</tag>
+ <buildArgs>
+ <PULSAR_TARBALL>target/distribution-${project.version}-bin.tar.gz</PULSAR_TARBALL>
+ </buildArgs>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-tarball</id>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ <configuration>
+ <outputDirectory>${project.build.directory}/</outputDirectory>
+ <includeArtifactIds>distribution</includeArtifactIds>
+ <excludeTransitive>true</excludeTransitive>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/docker/scripts/apply-config-from-env.py b/docker/pulsar/scripts/apply-config-from-env.py
similarity index 100%
rename from docker/scripts/apply-config-from-env.py
rename to docker/pulsar/scripts/apply-config-from-env.py
diff --git a/docker/scripts/generate-zookeeper-config.sh b/docker/pulsar/scripts/generate-zookeeper-config.sh
similarity index 100%
rename from docker/scripts/generate-zookeeper-config.sh
rename to docker/pulsar/scripts/generate-zookeeper-config.sh
diff --git a/docker/scripts/pulsar-zookeeper-ruok.sh b/docker/pulsar/scripts/pulsar-zookeeper-ruok.sh
similarity index 100%
rename from docker/scripts/pulsar-zookeeper-ruok.sh
rename to docker/pulsar/scripts/pulsar-zookeeper-ruok.sh
--
To stop receiving notification emails like this one, please contact
mmerli@apache.org.