This is an automated email from the ASF dual-hosted git repository.
chenhang pushed a commit to branch branch-2.8
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.8 by this push:
new 78a155b fix pulsar_standalone docker image build failed (#11862)
78a155b is described below
commit 78a155b37eeb8c2877d6d25cfb90b7d94083fd2d
Author: Hang Chen <[email protected]>
AuthorDate: Tue Aug 31 19:04:19 2021 +0800
fix pulsar_standalone docker image build failed (#11862)
### Motivation
When build the pulsar-standalone docker image, it throw the following
exception
[INFO] + sudo -u postgres /usr/lib/postgresql/11/bin/initdb /data/
[INFO]
[INFO] sudo: /usr/lib/postgresql/11/bin/initdb: command not found
[INFO]
[ERROR] The command '/bin/sh -c /pulsar/django/init-postgres.sh' returned a
non-zero code: 1
[WARNING] An attempt failed, will retry 1 more times
org.apache.maven.plugin.MojoExecutionException: Could not build image
at com.spotify.plugin.dockerfile.BuildMojo.buildImage
(BuildMojo.java:247)
at com.spotify.plugin.dockerfile.BuildMojo.execute (BuildMojo.java:135)
at com.spotify.plugin.dockerfile.AbstractDockerMojo.tryExecute
(AbstractDockerMojo.java:265)
at com.spotify.plugin.dockerfile.AbstractDockerMojo.execute
(AbstractDockerMojo.java:254)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:148)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
(LifecycleModuleBuilder.java:117)
at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
(LifecycleModuleBuilder.java:81)
at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch
(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main
(Launcher.java:347)
The root cause is when we use ubuntu 20.04 use base docker image instead of
openjdk:11-jdk image introduce by #11026 , the ubuntu 20.04 will install
postgresql 12 instead of postgresql 11 by default. However, the init and start
script has been hard code with postgresql 11 install path, which will lead to
command not found exception.
### Modification
1. add postgresql 11 resource address for ubuntu 20.04 and install
postgresql 11
---
docker/pulsar-standalone/Dockerfile | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/docker/pulsar-standalone/Dockerfile
b/docker/pulsar-standalone/Dockerfile
index cabbb7d..600f747 100644
--- a/docker/pulsar-standalone/Dockerfile
+++ b/docker/pulsar-standalone/Dockerfile
@@ -28,16 +28,20 @@ FROM ubuntu:20.04
ARG DEBIAN_FRONTEND=noninteractive
+RUN apt-get update \
+ && apt-get -y install wget gnupg && wget --quiet -O -
https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
+RUN bash -c "echo deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main
>> /etc/apt/sources.list.d/pgdg.list"
+
# Note that the libpq-dev package is needed here in order to install
# the required python psycopg2 package (for postgresql) later
RUN apt-get update \
- && apt-get -y install openjdk-11-jdk-headless python3 python3-dev
python3-pip postgresql sudo nginx supervisor libpq-dev
+ && apt-get -y install openjdk-11-jdk-headless python3 python3-dev
python3-pip postgresql-11 sudo nginx supervisor libpq-dev
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 10
RUN update-ca-certificates
# Postgres configuration
-COPY --from=dashboard /etc/postgresql/11/main/postgresql.conf
/etc/postgresql/12/main/postgresql.conf
+COPY --from=dashboard /etc/postgresql/11/main/postgresql.conf
/etc/postgresql/11/main/postgresql.conf
# Configure supervisor
COPY --from=dashboard /etc/supervisor/conf.d/supervisor-app.conf
/etc/supervisor/conf.d/supervisor-app.conf