2017-09-13 76 views
0

我是一個新的Codenvy用戶。我試圖在Codenvy中構建一個運行postgres的「棧」。添加postgres到Codenvy堆棧食譜(dockerfile)

我正在使用以下配方創建我的堆棧。 (使用https://github.com/eclipse/che-dockerfiles/blob/master/recipes/ubuntu_jdk8/Dockerfile作爲起點)

這個配方創建包含的Eclipse澈,Maven的,和Tomcat一個Codenvy服務器。

我需要螞蟻和Postgres添加配置。我能夠添加Ant。我目前面臨的挑戰是將Postgres添加到此配置中。

這是我目前的食譜。

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 

我發現當我加入這個我Codenvy堆棧的食譜,安裝使用下面的命令

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

Postgres的樣本dockerfile,我看到了故障,當我嘗試啓動我的工作區。

[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服務啓動?

回答

0

我決心從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 
0

之一泊塢的主要優點是不重新發明輪子。您應該使用官方PostgreSQL image

如果基PostgreSQL的圖像不足以滿足您的需求,從它繼承並添加任何你需要在上面。

作爲一般規則,如果你曾經構建過的圖像ubuntu,三思而後行,因爲你可能會使用錯誤的工作工具。