添加postgres Codenvy堆栈食谱(dockerfile)

我是一个新的Codenvy用户。 我正在尝试在Codenvy中构build一个运行postgres的“Stack”。

我正在使用以下配方创build我的堆栈。 (使用https://github.com/eclipse/che-dockerfiles/blob/master/recipes/ubuntu_jdk8/Dockerfile作为起点)

这个配方创build了一个包含Eclipse Che,Maven和Tomcat的Codenvy服务器。

我需要添加Ant和Postgres到这个configuration。 我能够添加ant。 我目前的挑战是添加Postgres到这个configuration。

这是我目前的食谱。

FROM eclipse/stack-base:ubuntu EXPOSE 4403 8000 8080 9876 22 LABEL che:server:8080:ref=tomcat8 che:server:8080:protocol=http che:server:8000:ref=tomcat8-debug che:server:8000:protocol=http che:server:9876:ref=codeserver che:server:9876:protocol=http ENV MAVEN_VERSION=3.3.9 \ ANT_VERSION=1.10.1 \ JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 \ TOMCAT_HOME=/home/user/tomcat8 \ TERM=xterm ENV M2_HOME=/home/user/apache-maven-$MAVEN_VERSION ENV ANT_HOME=/home/user/ant-$ANT_VERSION ENV PATH=$JAVA_HOME/bin:$M2_HOME/bin:$ANT_HOME/bin:$PATH RUN mkdir /home/user/tomcat8 /home/user/apache-maven-$MAVEN_VERSION $ANT_HOME && \ wget -qO- "https://www.apache.org/dist/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz" | tar -zx --strip-components=1 -C $ANT_HOME && \ wget -qO- "http://apache.ip-connect.vn.ua/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz" | tar -zx --strip-components=1 -C /home/user/apache-maven-$MAVEN_VERSION/ && \ wget -qO- "http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.24/bin/apache-tomcat-8.0.24.tar.gz" | tar -zx --strip-components=1 -C /home/user/tomcat8 && \ rm -rf /home/user/tomcat8/webapps/* && \ echo "export MAVEN_OPTS=\$JAVA_OPTS" >> /home/user/.bashrc 

我发现一个示例dockerfile用以下命令安装postgres

 RUN apt-get update && apt-get install -y ant git postgresql-client postgresql-contrib 

当我将其添加到Codenvy Stack配方中时,我尝试启动工作区时看到失败。

 [DOCKER] Step 13/13 : RUN apt-get update && apt-get install -y ant git postgresql-client postgresql-contrib [DOCKER] ---> Running in 672fc2aac027 [DOCKER] Reading package lists... [DOCKER] [DOCKER] [91mE: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied) [0m [DOCKER] Removing intermediate container 672fc2aac027 [DOCKER] [DOCKER] [ERROR] Failed to build image: The command '/bin/sh -c apt-get update && apt-get install -y ant git postgresql-client postgresql-contrib' returned a non-zero code: 100 

在这种环境下安装postgres的正确方法是什么? 一旦安装,我如何确保postgres服务启动?

Docker的主要优点之一是不重新发明轮子。 你应该使用官方的PostgreSQL映像 。

如果基础PostgreSQL映像不足以满足您的需求,请从其中inheritance并在顶部添加所需的任何内容。

作为一般的规则,如果你是从ubuntu构build你的映像的话,请三思,因为你可能会使用错误的工具来完成这个工作。

我使用GitHub上的codenvy回购协议解决了这个问题。

https://github.com/codenvy/codenvy/issues/2413

 FROM eclipse/stack-base:ubuntu EXPOSE 4403 8000 8080 9876 22 LABEL che:server:8080:ref=tomcat8 che:server:8080:protocol=http che:server:8000:ref=tomcat8-debug che:server:8000:protocol=http che:server:9876:ref=codeserver che:server:9876:protocol=http ENV MAVEN_VERSION=3.3.9 \ ANT_VERSION=1.10.1 \ JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 \ TOMCAT_HOME=/home/user/tomcat8 \ TERM=xterm ENV M2_HOME=/home/user/apache-maven-$MAVEN_VERSION ENV ANT_HOME=/home/user/ant-$ANT_VERSION ENV PATH=$JAVA_HOME/bin:$M2_HOME/bin:$ANT_HOME/bin:$PATH RUN mkdir /home/user/tomcat8 /home/user/apache-maven-$MAVEN_VERSION $ANT_HOME && \ wget -qO- "https://www.apache.org/dist/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz" | tar -zx --strip-components=1 -C $ANT_HOME && \ wget -qO- "http://apache.ip-connect.vn.ua/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz" | tar -zx --strip-components=1 -C /home/user/apache-maven-$MAVEN_VERSION/ && \ wget -qO- "http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.24/bin/apache-tomcat-8.0.24.tar.gz" | tar -zx --strip-components=1 -C /home/user/tomcat8 && \ rm -rf /home/user/tomcat8/webapps/* && \ echo "export MAVEN_OPTS=\$JAVA_OPTS" >> /home/user/.bashrc USER root RUN set -ex; \ key='B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8'; \ export GNUPGHOME="$(mktemp -d)"; \ sudo gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ sudo gpg --export "$key" > /etc/apt/trusted.gpg.d/postgres.gpg; \ rm -r "$GNUPGHOME"; \ sudo apt-key list ENV PG_MAJOR 9.5 ENV PG_VERSION 9.5.2-1 RUN sudo echo 'deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list USER user RUN sudo apt-get update \ && sudo apt-get install -y postgresql-common \ && sudo sed -ri 's/#(create_main_cluster) .*$/\1 = false/' /etc/postgresql-common/createcluster.conf \ && sudo apt-get install -y \ postgresql-$PG_MAJOR=$PG_VERSION \ postgresql-contrib-$PG_MAJOR=$PG_VERSION \ && sudo rm -rf /var/lib/apt/lists/* RUN sudo mv -v /usr/share/postgresql/$PG_MAJOR/postgresql.conf.sample /usr/share/postgresql/ \ && sudo ln -sv ../postgresql.conf.sample /usr/share/postgresql/$PG_MAJOR/ \ && sudo sed -ri "s!^#?(listen_addresses)\s*=\s*\S+.*!\1 = '*'!" /usr/share/postgresql/postgresql.conf.sample RUN sudo mkdir -p /var/run/postgresql && sudo chown -R postgres:postgres /var/run/postgresql && sudo chmod g+s /var/run/postgresql ENV PATH /usr/lib/postgresql/$PG_MAJOR/bin:$PATH ENV PGDATA /var/lib/postgresql/data RUN sudo mkdir -p "$PGDATA" && sudo chown -R postgres:postgres "$PGDATA" && sudo chmod 777 "$PGDATA" VOLUME /var/lib/postgresql/data CMD sudo pg_createcluster $PG_MAJOR main --start && sudo service postgresql start & tail -f /dev/null