安装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