Quellcode durchsuchen

Optim: using alpine linux as base
Feature: add gocd-agent-docker

Febbweiss vor 9 Jahren
Ursprung
Commit
0b76f9f70f

+ 39 - 5
docker-compose.yml

@@ -1,45 +1,79 @@
 gocd-server:
   build: gocd-server/.
+  container_name: gocd-server
   ports:
    - "8153:8153"
   volumes:
    - ./mnt/var/lib/go-server:/var/lib/go-server
    - ./mnt/etc/go:/etc/go
    - ./mnt/var/log/go-server:/var/log/go-server
+  links:
+   - nexus
   environment:
-   - AGENT_KEY=opensaasgocd
+   - AGENT_KEY=gocdkey
 gocd-agent:
   build: gocd-agent/.
+  container_name: gocd-agent
   links:
    - gocd-server
   environment:
-   - AGENT_KEY=opensaasgocd
+   - AGENT_KEY=gocdkey
+   - AGENT_RESOURCES=java,node,cf
    - GO_SERVER=gocd-server
    - GO_SERVER_PORT=8153
 gocd-agent-jdk8:
   build: gocd-agent-jdk8/.
+  container_name: gocd-agent-jdk8
   links:
    - gocd-server
   environment:
-   - AGENT_KEY=opensaasgocd
+   - AGENT_KEY=gocdkey
    - AGENT_RESOURCES=java
    - GO_SERVER=gocd-server
    - GO_SERVER_PORT=8153
 gocd-agent-nodejs:
   build: gocd-agent-nodejs/.
+  container_name: gocd-agent-nodejs
   links:
    - gocd-server
+  volumes:
+   - ./mnt/var/log:/var/log
   environment:
-   - AGENT_KEY=opensaasgocd
+   - AGENT_KEY=gocdkey
    - AGENT_RESOURCES=node
    - GO_SERVER=gocd-server
    - GO_SERVER_PORT=8153
 gocd-agent-cloudfoundry:
   build: gocd-agent-cloudfoundry/.
+  container_name: gocd-agent-cf
   links:
    - gocd-server
   environment:
-   - AGENT_KEY=opensaasgocd
+   - AGENT_KEY=gocdkey
    - AGENT_RESOURCES=cf
    - GO_SERVER=gocd-server
    - GO_SERVER_PORT=8153
+gocd-agent-docker:
+  build: gocd-agent-docker/.
+  container_name: gocd-agent-docker
+  links:
+   - gocd-server
+  environment:
+   - AGENT_KEY=gocdkey
+   - AGENT_RESOURCES=docker
+   - GO_SERVER=gocd-server
+   - GO_SERVER_PORT=8153
+nexus:
+  image: sonatype/nexus
+  container_name: nexus
+  ports:
+   - "8081:8081"
+postfix:
+  image: juanluisbaptiste/postfix:latest
+  ports:
+   - "25:25"
+  environment:
+      SMTP_SERVER: smtp.mycompany.com
+      SMTP_USERNAME: user@mycompany.com
+      SMTP_PASSWORD: changeme
+      SERVER_HOSTNAME: helpdesk.mycompany.com

+ 24 - 15
gocd-agent-cloudfoundry/Dockerfile

@@ -1,35 +1,44 @@
-FROM debian
+FROM alpine
 
-RUN apt-get clean && apt-get update \
-    && apt-get install -y \
+ENV JAVA_HOME="/usr/lib/jvm/default-jvm"
+
+RUN apk update \
+    && apk add --no-cache \
+       libc6-compat \
        curl \
-       default-jre-headless \
        git \
        subversion \
-    && apt-get clean \
-    && rm -rf /var/lib/apt/listss/*
+       openjdk7-jre-base \
+       bash \
+    && ln -fs /bin/bash /bin/sh
 
 # Installing CloudFoundry
-RUN cd /tmp \
-    && curl -sL -o cf-cli-installer_6.15.0_x86-64.deb "https://cli.run.pivotal.io/stable?release=debian64&version=6.15.0&source=github-rel" \
-    && dpkg -i -E cf-cli-installer_6.15.0_x86-64.deb \
+RUN cd /usr/local/bin \
+    && curl -L "https://cli.run.pivotal.io/stable?release=linux64-binary&source=github" | tar -zx \
+    && mkdir /lib64 \
+    && ln -s /lib/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 \
     && cf add-plugin-repo bluemix-cf-staging http://plugins.ng.bluemix.net >/dev/null 2>&1
 
 # Installing Go agent
-RUN cd /tmp \
-    && curl -sL -o go-agent.deb "https://download.go.cd/gocd-deb/go-agent-15.2.0-2248.deb" \
-    && dpkg -i -E go-agent.deb \
-    && sed -i -e 's#GO_SERVER=127.0.0.1#GO_SERVER=gocd-server#' /etc/default/go-agent
+WORKDIR /var/lib
+RUN curl -sL -o go-agent-16.1.0.zip "https://download.go.cd/binaries/16.1.0-2855/generic/go-agent-16.1.0-2855.zip" \
+    && unzip go-agent-16.1.0.zip \
+    && mv go-agent-16.1.0 go-agent \
+    && rm go-agent-16.1.0.zip
 
 RUN git config --global url."https://".insteadOf git://
 
+RUN rm -rf /tmp/* /var/tmp/* /var/cache/apk/*
+
 #VOLUME ["/var/lib/go-agent", "/var/log/go-agent", "/var/go/.ssh"]
 
 COPY autoregister.properties /var/lib/go-agent/config/autoregister.properties
 
+#ENTRYPOINT ["/bin/bash", "-c"]
+
 CMD until curl -s -o /dev/null "http://${GO_SERVER}:${GO_SERVER_PORT}"; do sleep 5; done; \
-    if [ -n "$AGENT_KEY" ]]; then \
+    if [ -n "$AGENT_KEY" ]; then \
         sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \ 
     fi; \
-    (/usr/share/go-agent/agent.sh &); while [ ! -f /var/log/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/log/go-agent/*
+    (/var/lib/go-agent/agent.sh &); while [ ! -f /var/lib/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/lib/go-agent/*.log
 

+ 36 - 0
gocd-agent-docker/Dockerfile

@@ -0,0 +1,36 @@
+FROM docker
+
+ENV JAVA_HOME="/usr/lib/jvm/default-jvm"
+
+RUN apk update \
+    && apk add --no-cache \
+       curl \
+       git \
+       subversion \
+       openjdk7-jre-base \
+       bash \
+    && ln -fs /bin/bash /bin/sh
+
+# Installing Go agent
+WORKDIR /var/lib
+RUN curl -sL -o go-agent-16.1.0.zip "https://download.go.cd/binaries/16.1.0-2855/generic/go-agent-16.1.0-2855.zip" \
+    && unzip go-agent-16.1.0.zip \
+    && mv go-agent-16.1.0 go-agent \
+    && rm go-agent-16.1.0.zip
+
+RUN rm -rf /tmp/* /var/tmp/* /var/cache/apk/*
+
+RUN git config --global url."https://".insteadOf git://
+
+#VOLUME ["/var/lib/go-agent", "/var/log/go-agent", "/var/go/.ssh"]
+
+COPY autoregister.properties /var/lib/go-agent/config/autoregister.properties
+
+#ENTRYPOINT ["/bin/bash", "-c"]
+
+CMD until curl -s -o /dev/null "http://${GO_SERVER}:${GO_SERVER_PORT}"; do sleep 5; done; \
+    if [ -n "$AGENT_KEY" ]; then \
+        sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \ 
+    fi; \
+    (/var/lib/go-agent/agent.sh &); while [ ! -f /var/lib/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/lib/go-agent/*.log
+

+ 2 - 0
gocd-agent-docker/autoregister.properties

@@ -0,0 +1,2 @@
+agent.auto.register.key=
+agent.auto.register.resources=

+ 38 - 28
gocd-agent-jdk8/Dockerfile

@@ -1,46 +1,56 @@
-FROM debian
+FROM frolvlad/alpine-oraclejdk8
 
-RUN apt-get clean && apt-get update \
-    && apt-get install -y \
+RUN apk update \
+    && apk add --no-cache \
+       libc6-compat \
        curl \
-       default-jre-headless \
        git \
-       subversion 
-RUN apt-get clean && apt-get install -y maven
-RUN apt-get clean && apt-get install -y gradle \
-    && apt-get clean \
-    && rm -rf /var/lib/apt/listss/*
+       subversion \
+       bash \
+    && ln -fs /bin/bash /bin/sh
+
+WORKDIR /var/lib
+RUN curl -sL "http://wwwftp.ciril.fr/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz" | tar -zx
+RUN curl -sL -o gradle-2.11-all.zip "https://services.gradle.org/distributions/gradle-2.11-all.zip" \
+    && unzip gradle-2.11-all.zip \
+    && rm gradle-2.11-all.zip \
+    && rm -rf gradle-2.11/samples gradle-2.11/docs gradle-2.11/media  gradle-2.11/src
 
-WORKDIR /opt
 #RUN curl -sL -o - --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" -q "http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz" | tar xzf - 
-ADD binaries/jdk-8u66-linux-x64.tar.gz /opt/.
-RUN update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_66/bin/java 120 \
-    && update-alternatives --install /usr/bin/keytool keytool /opt/jdk1.8.0_66/bin/keytool 120\
-    && update-alternatives --install /usr/bin/rmiregistry rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry 120\
-    && update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_66/bin/javac 120 \
-	--slave /usr/bin/jar  jar  /opt/jdk1.8.0_66/bin/jar \
-	--slave /usr/bin/rmic rmic /opt/jdk1.8.0_66/bin/rmic\
-    && update-alternatives --set java /opt/jdk1.8.0_66/bin/java\
-    && update-alternatives --set keytool /opt/jdk1.8.0_66/bin/keytool \
-    && update-alternatives --set rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry \
-    && echo "export JAVA_HOME=/opt/jdk1.8.0_66" >> /.profile
+#ADD binaries/jdk-8u66-linux-x64.tar.gz /opt/.
+#RUN update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_66/bin/java 120 \
+#    && update-alternatives --install /usr/bin/keytool keytool /opt/jdk1.8.0_66/bin/keytool 120\
+#    && update-alternatives --install /usr/bin/rmiregistry rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry 120\
+#    && update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_66/bin/javac 120 \
+#	--slave /usr/bin/jar  jar  /opt/jdk1.8.0_66/bin/jar \
+#	--slave /usr/bin/rmic rmic /opt/jdk1.8.0_66/bin/rmic\
+#    && update-alternatives --set java /opt/jdk1.8.0_66/bin/java\
+#    && update-alternatives --set keytool /opt/jdk1.8.0_66/bin/keytool \
+#    && update-alternatives --set rmiregistry /opt/jdk1.8.0_66/bin/rmiregistry 
+
+ENV MAVEN_HOME /var/lib/apache-maven-3.3.9
+ENV GRADLE_HOME /var/lib/gradle-2.11
+ENV PATH $PATH:$MAVEN_HOME/bin:$GRADLE_HOME/bin
 
 # Installing Go agent
-RUN cd /tmp \
-    && curl -sL -o go-agent.deb "https://download.go.cd/gocd-deb/go-agent-15.2.0-2248.deb" \
-    && dpkg -i -E go-agent.deb \
-    && sed -i -e 's#GO_SERVER=127.0.0.1#GO_SERVER=gocd-server#' /etc/default/go-agent \
-    && sed -i -e 's#JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre"#JAVA_HOME="/opt/jdk1.8.0_66/jre"#' /etc/default/go-agent
+RUN curl -sL -o go-agent-16.1.0.zip "https://download.go.cd/binaries/16.1.0-2855/generic/go-agent-16.1.0-2855.zip" \
+    && unzip go-agent-16.1.0.zip \
+    && mv go-agent-16.1.0 go-agent \
+    && rm go-agent-16.1.0.zip
 
 RUN git config --global url."https://".insteadOf git://
 
+RUN rm -rf /tmp/* /var/tmp/* /var/cache/apk/*
+
 #VOLUME ["/var/lib/go-agent", "/var/log/go-agent", "/var/go/.ssh"]
 
 COPY autoregister.properties /var/lib/go-agent/config/autoregister.properties
 
+#ENTRYPOINT ["/bin/bash", "-c"]
+
 CMD until curl -s -o /dev/null "http://${GO_SERVER}:${GO_SERVER_PORT}"; do sleep 5; done; \
-    if [ -n "$AGENT_KEY" ]]; then \
+    if [ -n "$AGENT_KEY" ]; then \
         sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \ 
     fi; \
-    (/usr/share/go-agent/agent.sh &); while [ ! -f /var/log/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/log/go-agent/*
+    (/var/lib/go-agent/agent.sh &); while [ ! -f /var/lib/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/lib/go-agent/*.log
 

+ 3 - 4
gocd-agent-nodejs/Dockerfile

@@ -5,7 +5,7 @@ RUN apt-get clean && apt-get update \
        curl \
        default-jre-headless \
        git \
-       subversion 
+       subversion
 RUN apt-get clean && apt-get install -y mongodb
 RUN apt-get clean && apt-get install -y python-dev
 RUN curl -sL https://deb.nodesource.com/setup_5.x | bash -E - \
@@ -18,7 +18,7 @@ RUN curl -sL https://deb.nodesource.com/setup_5.x | bash -E - \
 
 # Installing Go agent
 RUN cd /tmp \
-    && curl -sL -o go-agent.deb "https://download.go.cd/gocd-deb/go-agent-15.2.0-2248.deb" \
+    && curl -sL -o go-agent.deb "https://download.go.cd/binaries/16.3.0-3183/deb/go-agent-16.3.0-3183.deb" \
     && dpkg -i -E go-agent.deb \
     && sed -i -e 's#GO_SERVER=127.0.0.1#GO_SERVER=gocd-server#' /etc/default/go-agent
 
@@ -30,7 +30,6 @@ COPY autoregister.properties /var/lib/go-agent/config/autoregister.properties
 
 CMD until curl -s -o /dev/null "http://${GO_SERVER}:${GO_SERVER_PORT}"; do sleep 5; done; \
     if [ -n "$AGENT_KEY" ]]; then \
-        sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \ 
+        sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \
     fi; \
     (/usr/share/go-agent/agent.sh &); (service mongodb start); while [ ! -f /var/log/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/log/go-agent/*
-

+ 10 - 11
gocd-agent/Dockerfile

@@ -1,24 +1,23 @@
-FROM debian
+FROM node
 
 RUN apt-get clean && apt-get update \
     && apt-get install -y \
        curl \
        git \
-       subversion 
-RUN apt-get clean && apt-get install -y python-dev
-RUN curl -sL https://deb.nodesource.com/setup_5.x | bash -E - \
+       subversion \
     && apt-get update \
     && apt-get install -y \
        build-essential \
        nodejs
 
+RUN apt-get clean && apt-get install -y mongodb
 RUN apt-get clean && apt-get install -y maven
 RUN apt-get clean && apt-get install -y gradle \
     && apt-get clean \
-    && rm -rf /var/lib/apt/listss/*
+    && rm -rf /var/lib/apt/listss/* /tmp/* /var/tmp/*
 
 WORKDIR /opt
-#RUN curl -sL -o - --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" -q "http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz" | tar xzf - 
+#RUN curl -sL -o - --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" -q "http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz" | tar xzf -
 ADD binaries/jdk-8u66-linux-x64.tar.gz /opt/.
 RUN update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_66/bin/java 120 \
     && update-alternatives --install /usr/bin/keytool keytool /opt/jdk1.8.0_66/bin/keytool 120\
@@ -36,22 +35,22 @@ RUN cd /tmp \
     && curl -sL -o cf-cli-installer_6.15.0_x86-64.deb "https://cli.run.pivotal.io/stable?release=debian64&version=6.15.0&source=github-rel" \
     && dpkg -i -E cf-cli-installer_6.15.0_x86-64.deb \
     && cf add-plugin-repo bluemix-cf-staging http://plugins.ng.bluemix.net >/dev/null 2>&1
-#    && pip install python-openstackclient >/dev/null 2>&1
 
 # Installing Go agent
 RUN cd /tmp \
-    && curl -sL -o go-agent.deb "https://download.go.cd/gocd-deb/go-agent-15.2.0-2248.deb" \
+    && curl -sL -o go-agent.deb "https://download.go.cd/binaries/16.1.0-2855/deb/go-agent-16.1.0-2855.deb" \
     && dpkg -i -E go-agent.deb \
     && sed -i -e 's#GO_SERVER=127.0.0.1#GO_SERVER=gocd-server#' /etc/default/go-agent \
     && sed -i -e 's#JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/jre"#JAVA_HOME="/opt/jdk1.8.0_66/jre"#' /etc/default/go-agent
 
+RUN git config --global url."https://".insteadOf git://
+
 #VOLUME ["/var/lib/go-agent", "/var/log/go-agent", "/var/go/.ssh"]
 
 COPY autoregister.properties /var/lib/go-agent/config/autoregister.properties
 
 CMD until curl -s -o /dev/null "http://${GO_SERVER}:${GO_SERVER_PORT}"; do sleep 5; done; \
     if [ -n "$AGENT_KEY" ]]; then \
-        sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \ 
+        sed -i -e 's/=.*/=/g' -e "s/key=/key=$AGENT_KEY/" -e "s/resources=/resources=$AGENT_RESOURCES/" /var/lib/go-agent/config/autoregister.properties; \
     fi; \
-    (/usr/share/go-agent/agent.sh &); while [ ! -f /var/log/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/log/go-agent/*
-
+    (/usr/share/go-agent/agent.sh &); (service mongodb start); while [ ! -f /var/log/go-agent/go-agent-bootstrapper.log ]; do sleep 1; done; exec tail -F /var/log/go-agent/*

+ 4 - 3
gocd-server/Dockerfile

@@ -9,8 +9,7 @@ RUN apt-get clean && apt-get install -y \
        subversion
 RUN apt-get clean && apt-get install -y maven
 RUN apt-get clean && apt-get install -y gradle \
-    && apt-get clean \
-    && rm -rf /var/lib/apt/lists/*
+    && apt-get clean
 
 # Setting Java8 as default Java
 WORKDIR /opt
@@ -29,7 +28,7 @@ RUN update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_66/bin/java 1
 
 # Installing Go server
 RUN cd /tmp \
-    && curl -sL -o go-server.deb "https://download.go.cd/gocd-deb/go-server-16.1.0-2855.deb" \
+    && curl -sL -o go-server.deb "https://download.go.cd/binaries/16.1.0-2855/deb/go-server-16.1.0-2855.deb" \
     && dpkg -i go-server.deb \
     && rm -f go-server.deb \
     && sed -i -e "s/DAEMON=Y/DAEMON=N/" /etc/default/go-server \
@@ -37,6 +36,8 @@ RUN cd /tmp \
 
 RUN git config --global url."https://".insteadOf git://
 
+RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+
 VOLUME ["/var/lib/go-server", "/var/log/go-server", "/etc/go", "/var/go/.ssh"]
 
 # Building CloudFoundry plugin