2016-04-06 36 views
0
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對使用的碼頭工人一個容器中運行格里特。我所做的更改是設置GERRIT_SITE,創建此目錄,爲GERRIT_USER分配權限以使用此目錄並將其設置爲卷。當我構建碼頭圖像時,碼頭圖像已成功構建。但是,當我嘗試運行容器,我的主機卷安裝到泊塢窗容器容積我得到以下錯誤...Dockerfile添加捲到格里特容器

-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 

我確定主機目錄的所有權限存在。我一直在堅持這一點,我不知道如何去做這件事。我有些幫助。先謝謝你。

回答

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檢查站點文件是否存在於該目錄中,如果不存在,則會產生錯誤。

如果您在啓動容器時未使用-v選項,容器是否正確運行?

+0

不,它不工作沒有-v選項也。顯示相同的錯誤。但是,當我回復這些變化時,圖像可以正常工作。我在gerrit home初始化之後嘗試創建GERRIT_SITE文件夾,這再次失敗,因此無法找到GERRIT_SITE。我嘗試的另一個配置是將GERRIT_HOME作爲我自己的卷。當使用-v選項運行時,它再次顯示相同的錯誤,但在沒有-v選項的情況下運行良好。 – Anusha