安装runner
创建工作目录:
/usr/local/docker/runner
创建构建目录
/usr/local/docker/runner/environment
复制jdk到environmet
cp /downloads/jdk-8u152-linux-x64.tar.gz .
在environment下创建Dockerfile文件
FROM gitlab/gitlab-runner:v11.0.2 MAINTAINER Lusifer <[email protected]> # 修改软件源 RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list && \ echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list && \ echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list && \ echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list && \ apt-get update -y && \ apt-get clean # 安装 Docker RUN apt-get -y install apt-transport-https ca-certificates curl software-properties-common && \ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - && \ add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && \ apt-get update -y && \ apt-get install -y docker-ce COPY daemon.json /etc/docker/daemon.json # 安装 Docker Compose WORKDIR /usr/local/bin RUN curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose # RUN wget https://raw.githubusercontent.com/topsale/resources/master/docker/docker-compose RUN chmod +x docker-compose # 安装 Java RUN mkdir -p /usr/local/java WORKDIR /usr/local/java COPY jdk-8u152-linux-x64.tar.gz /usr/local/java RUN tar -zxvf jdk-8u152-linux-x64.tar.gz && \ rm -fr jdk-8u152-linux-x64.tar.gz # 安装 Maven RUN mkdir -p /usr/local/maven WORKDIR /usr/local/maven RUN wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz # RUN wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz # COPY apache-maven-3.5.3-bin.tar.gz /usr/local/maven RUN tar -zxvf apache-maven-3.6.3-bin.tar.gz && \ rm -fr apache-maven-3.6.3-bin.tar.gz # COPY settings.xml /usr/local/maven/apache-maven-3.5.3/conf/settings.xml # 配置环境变量 ENV JAVA_HOME /usr/local/java/jdk1.8.0_152 ENV MAVEN_HOME /usr/local/maven/apache-maven-3.6.3 ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin WORKD
创建daemon.json文件
{ "registry-mirrors": [ "https://m3dz4myl.mirror.aliyuncs.com" ], "insecure-registries": [ "192.168.91.134:5000" ] }
在/usr/local/docker/runner目录下新建docker-compose.yml文件
version: '3.1' services: gitlab-runner: build: environment restart: always container_name: gitlab-runner privileged: true volumes: - /usr/local/docker/runner/config:/etc/gitlab-runner - /var/run/docker.sock:/var/run/docker.sock
执行docker-compose
docker-compose up -d
注册runner
docker exec -it gitlab-runner gitlab-runner register
进入gitlab网站中的项目
复制地址,粘贴
复制令牌,粘贴
enter,enter,输入shell
成功注册
查看注册信息
cat /config/config.toml
制作流水线
新建 .gitlab-ci.yml
stages: - test # stage阶段名,要上下对应 test: stage: test script: - echo "Start Runner"
提交到gitlab
成功
编写maven package脚本
上传.gitlab-ci.yml如下:
stages: - package # stage阶段名,要上下对应 test: stage: package script: - echo "Start Runner" - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package
下载完成后进入容器内部
docker exec -it docker-runner /bin/bash
查看target目录
cd /home/gitlab-runner/builds/2cded9a3/0/SpringCloudDemo/Common-Config ll
编写Dockerfile脚本
在项目中新建docker目录以及Dockerfile文件
FROM openjdk:8-jre MAINTAINER ZLJ <[email protected]> ENV APP_VERSION 1.0.0-SNAPSHOT #ENV DOCKERIZE_VERSION v0.6.1 #RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ # && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ # && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz RUN mkdir /app COPY Common-Config-$APP_VERSION.jar /app/app.jar ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] #ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "tcp://192.168.91.130:8888", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod" ] EXPOSE
build:镜像
在.gitlb-ci.ymlx修改内容
stages: - build # stage阶段名,要上下对应 build: stage: build script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker - cd docker - docker build -t 192.168.91.134:5000/common-config .
上传,查看运行状态:
查看生成的镜像:
docker ps
push: 镜像
stages: - build - push # stage阶段名,要上下对应 build: stage: build script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker - cd docker - docker build -t 192.168.91.134:5000/common-config . push: stage: push script: - docker push 192.168.91.134:5000/common-config
上传到gitlab
查看Docker registry
run:创建容器
在项目中新建docker-compose.yml
version: '3.1' services: common-config: restart: always image: 192.168.91.134:5000/common-config container_name: common-config ports: - 8888:8888 networks: - eureka_network networks: eureka_network:
修改.gitlab-ci.yml
stages: - build - push - run # stage阶段名,要上下对应 build: stage: build script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker - cd docker - docker build -t 192.168.91.134:5000/common-config . push: stage: push script: - docker push 192.168.91.134:5000/common-config run: stage: run script: - cd docker - docker-compose down - docker-compose up -
上传,查看容器运行状态
clean:清除虚悬镜像
stages: - build - push - run - clean # stage阶段名,要上下对应 build: stage: build script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker - cd docker - docker build -t 192.168.91.134:5000/common-config . push: stage: push script: - docker push 192.168.91.134:5000/common-config run: stage: run script: - cd docker - docker-compose down - docker-compose up -d clean: stage: clean script: - docker rmi $(docker images -q -f dangling=tru
配置文件
config
Dockerfile
FROM openjdk:8-jre MAINTAINER ZLJ <[email protected]> ENV APP_VERSION 1.0.0-SNAPSHOT #ENV DOCKERIZE_VERSION v0.6.1 #RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ # && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ # && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz RUN mkdir /app COPY Common-Config-$APP_VERSION.jar /app/app.jar ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] #ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "tcp://192.168.91.130:8888", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] EXPOSE
docker-compose.yml
version: '3.1' services: common-config: restart: always image: 192.168.91.134:5000/common-config container_name: common-config ports: - 8888:8888 networks: - config_network networks: config_network:
.gitlab-ci.yml
stages: - build - push - run - clean # stage阶段名,要上下对应 build: stage: build script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package - mv target/Common-Config-1.0.0-SNAPSHOT.jar docker - cd docker - docker build -t 192.168.91.134:5000/common-config . push: stage: push script: - docker push 192.168.91.134:5000/common-config run: stage: run script: - cd docker - docker-compose down - docker-compose up -d clean: stage: clean script: - docker rmi $(docker images -q -f dangling=tru
eureka
Dockerfile
FROM openjdk:8-jre MAINTAINER ZLJ <[email protected]> ENV APP_VERSION 1.0.0-SNAPSHOT ENV DOCKERIZE_VERSION v0.6.1 RUN wget https://github.com/jwilder/dockerize/releases/download/v0.6.1/dockerize-linux-amd64-v0.6.1.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-v0.6.1.tar.gz \ && rm dockerize-linux-amd64-v0.6.1.tar.gz RUN mkdir /app COPY Master-Eureka-$APP_VERSION.jar /app/app.jar #ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.91.130:8888/Master-Eureka/prod/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] EXPOSE
docker-compose.yml
version: '3.1' services: master-eureka-1: restart: always image: 192.168.91.134:5000/master-eureka container_name: master-eureka-1 ports: - 8761:8761 networks: - eureka_network_1 master-eureka-2: restart: always image: 192.168.91.134:5000/master-eureka container_name: master-eureka-2 ports: - 8861:8761 networks: - eureka_network_2 master-eureka-3: restart: always image: 192.168.91.134:5000/master-eureka container_name: master-eureka-3 ports: - 8961:8761 networks: - eureka_network_3 networks: eureka_network_1: eureka_network_2: eureka_network
.gitlab-ci,yml
stages: - build - push - run - clean # stage阶段名,要上下对应 build: stage: build script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package - mv target/Master-Eureka-1.0.0-SNAPSHOT.jar docker - cd docker - docker build -t 192.168.91.134:5000/master-eureka . push: stage: push script: - docker push 192.168.91.134:5000/master-eureka run: stage: run script: - cd docker - docker-compose down - docker-compose up -d clean: stage: clean script: - docker rmi $(docker images -q -f dangling=tru
dependencies
.gitlab-ci.yml
stages: - deploy # stage阶段名,要上下对应 deploy: stage: deploy script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn deploy
配置maven settings.xml
<server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-releases</id> <username>admin</username> <password>admin123</password> </server>
zipkin
Dockerfile
FROM openjdk:8-jre MAINTAINER ZLJ <[email protected]> ENV APP_VERSION 1.0.0-SNAPSHOT ENV DOCKERIZE_VERSION v0.6.1 RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz RUN mkdir /app COPY Master-Zipkin-$APP_VERSION.jar /app/app.jar #ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.91.130:8888/Master-Zipkin/prod/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] EXPOSE
docker-compose.yml
version: '3.1' services: master-zipkin: restart: always image: 192.168.91.134:5000/master-zipkin container_name: master-zipkin ports: - 9411:9411 networks: - zipkin_network networks: zipkin_network:
.gitlab-ci.yml
stages: - build - push - run - clean # stage阶段名,要上下对应 build: stage: build script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package - mv target/Master-Zipkin-1.0.0-SNAPSHOT.jar docker - cd docker - docker build -t 192.168.91.134:5000/master-zipkin . push: stage: push script: - docker push 192.168.91.134:5000/master-zipkin run: stage: run script: - cd docker - docker-compose down - docker-compose up -d clean: stage: clean script: - docker rmi $(docker images -q -f dangling=tru
zuul
Dockerfile
FROM openjdk:8-jre MAINTAINER ZLJ <[email protected]> ENV APP_VERSION 1.0.0-SNAPSHOT ENV DOCKERIZE_VERSION v0.6.1 RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz RUN mkdir /app COPY Master-Zuul-$APP_VERSION.jar /app/app.jar #ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.91.130:8888/Master-Zuul/prod/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] EXPOSE
docker-compose.yml
version: '3.1' services: master-zuul: restart: always image: 192.168.91.134:5000/master-zuul container_name: master-zuul ports: - 8769:8769 networks: - zuul_network networks: zuul_network:
.gitlab-ci.yml
stages: - build - push - run - clean # stage阶段名,要上下对应 build: stage: build script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package - mv target/Master-Zuul-1.0.0-SNAPSHOT.jar docker - cd docker - docker build -t 192.168.91.134:5000/master-zuul . push: stage: push script: - docker push 192.168.91.134:5000/master-zuul run: stage: run script: - cd docker - docker-compose down - docker-compose up -d clean: stage: clean script: - docker rmi $(docker images -q -f dangling=tru
admin
Dockerfile
FROM openjdk:8-jre MAINTAINER ZLJ <[email protected]> ENV APP_VERSION 1.0.0-SNAPSHOT ENV DOCKERIZE_VERSION v0.6.1 RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz RUN mkdir /app COPY Master-Admin-$APP_VERSION.jar /app/app.jar #ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "http://192.168.91.130:8888/Master-Admin/prod/master", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar", "--spring.profiles.active=prod"] EXPOSE
docker-compose.yml
version: '3.1' services: master-admin: restart: always image: 192.168.91.134:5000/master-admin container_name: master-admin ports: - 8084:8084 networks: - admin_network networks: admin_network:
.gitlab-ci.yml
stages: - build - push - run - clean # stage阶段名,要上下对应 build: stage: build script: - /usr/local/maven/apache-maven-3.6.3/bin/mvn clean package - mv target/Master-Admin-1.0.0-SNAPSHOT.jar docker - cd docker - docker build -t 192.168.91.134:5000/master-admin . push: stage: push script: - docker push 192.168.91.134:5000/master-admin run: stage: run script: - cd docker - docker-compose down - docker-compose up -d clean: stage: clean script: - docker rmi $(docker images -q -f dangling=tr