用于将卷添加到gerrit容器的Dockerfile

时间:2016-04-06 04:42:12

标签: docker gerrit

FROM ubuntu:trusty



ENV GERRIT_USER gerrit2
ENV GERRIT_HOME /home/${GERRIT_USER}
ENV GERRIT_SITE ${GERRIT_HOME}/gerrit/site
ENV GERRIT_WAR ${GERRIT_HOME}/gerrit.war
ENV GERRIT_VERSION 2.9.3
RUN useradd -m ${GERRIT_USER}

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-7-jre-headless git-core vim

ADD https://gerrit-releases.storage.googleapis.com/gerrit-${GERRIT_VERSION}.war /tmp/gerrit.war
ADD . /app

RUN mv /tmp/gerrit.war $GERRIT_WAR
RUN chown -R ${GERRIT_USER}:${GERRIT_USER} $GERRIT_HOME

USER $GERRIT_USER
WORKDIR $GERRIT_HOME

RUN mkdir -p $GERRIT_SITE
RUN chown -R ${GERRIT_USER}:${GERRIT_USER} $GERRIT_SITE

ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64/jre
RUN java -jar $GERRIT_WAR init --batch -d ${GERRIT_HOME}/gerrit

ADD gerrit.config $GERRIT_HOME/gerrit/etc/gerrit.config

VOLUME $GERRIT_SITE

ENV AUTH_TYPE LDAP

EXPOSE 8080 29418
CMD ["/app/start.sh"]

上下文: 大多数上面的dockerfile是我从dockerhub下载的,用于在使用docker的容器中运行gerrit。我所做的更改是设置GERRIT_SITE,创建此目录,为GERRIT_USER分配权限以使用此目录并将其设置为卷。当我构建docker镜像时,docker镜像已成功构建。但是,当我尝试运行容器,将我的主机卷安装到docker容器卷时,我收到以下错误...

-bash-4.1$ docker run -p 8080:8080 -p 29418:29418 -v /home/user/gerritVolume/vols:/home/gerrit2/gerrit/site gerritvol

** ERROR: Gerrit is not initialized in /home/gerrit2/gerrit/site
cat: /home/gerrit2/gerrit/logs/error_log: No such file or directory

我确保主机目录存在所有权限。我一直坚持这一点,我不知道如何解决这个问题。我有所帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

通过从主机绑定挂载目录,主机上的文件优先,因此容器内的/home/gerrit2/gerrit/site目录将为空,除非您有一个现有站点您的主机,您已在容器中绑定安装。

我没有运行Gerrit的经验,但根据这条线; https://code.google.com/p/gerrit/source/browse/gerrit-pgm/src/main/resources/com/google/gerrit/pgm/gerrit.sh?r=967eae196f5433394cdc5e63fe4d154ef458bb39#164

看起来gerrit会检查该目录中是否存在site-files,如果没有,则会产生错误。

如果您在启动容器时没有使用-v选项,容器是否正常运行?