将 postgres 添加到 Codenvy Stack Recipe (dockerfile)
Add postgres to a Codenvy Stack Recipe (dockerfile)
我是Codenvy的新用户。我正在尝试在 Codenvy 中构建一个 "Stack",它将 运行 postgres.
我正在使用以下方法创建我的 Stack。 (以https://github.com/eclipse/che-dockerfiles/blob/master/recipes/ubuntu_jdk8/Dockerfile为起点)
此配方创建了一个包含 Eclipse Che、Maven 和 Tomcat 的 Codenvy 服务器。
我需要将 Ant 和 Postgres 添加到此配置中。我能够添加蚂蚁。我当前的挑战是将 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
我找到了一个示例 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 image.
如果基本 PostgreSQL 映像不能满足您的需求,请继承它并在上面添加您需要的任何内容。
一般来说,如果您曾经根据 ubuntu
构建图像,请三思而后行,因为您可能使用了错误的工具。
我在 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) .*$/ = 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+.*! = '*'!" /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
我是Codenvy的新用户。我正在尝试在 Codenvy 中构建一个 "Stack",它将 运行 postgres.
我正在使用以下方法创建我的 Stack。 (以https://github.com/eclipse/che-dockerfiles/blob/master/recipes/ubuntu_jdk8/Dockerfile为起点)
此配方创建了一个包含 Eclipse Che、Maven 和 Tomcat 的 Codenvy 服务器。
我需要将 Ant 和 Postgres 添加到此配置中。我能够添加蚂蚁。我当前的挑战是将 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
我找到了一个示例 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 image.
如果基本 PostgreSQL 映像不能满足您的需求,请继承它并在上面添加您需要的任何内容。
一般来说,如果您曾经根据 ubuntu
构建图像,请三思而后行,因为您可能使用了错误的工具。
我在 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) .*$/ = 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+.*! = '*'!" /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