docker安装gitlab、jenkins百度有很多。
配置服务器ssh
1、利用命令ssh-keygen -t rsa -P "",连续按三个回车,生成密钥对
2、指定目录下查看已经生成好的密钥和公钥
3、利用命令cat id_rsa.pub >> authorized_keys将公钥加入到授权列表
4、给予文件authroized_keys以可读可写的权限
5、配置完毕,检验正确性
配置Jenkins
#打开jenkins页面
#添加插件:系统管理 - 插件管理
#需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter
#添加完插件重启jenkins,开始添加要部署代码的主机,注意一定是要能够ssh登陆的用户。
#添加主机:系统管理 - 系统设置 找到Publish over SSH
#添加完主机之后,新建一个项目,开始配置构建操作
Exec command修改
cd /cc/test
chmod 777 ./build.sh
./build.sh
#配置gitlab,当有代码提交时,触发jenkins的部署操作
项目配置
项目路径
pom.xml加入插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- tag::plugin[] -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${project.artifactId}-${project.version}</imageName>
<dockerDirectory>${project.basedir}/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- end::plugin[] -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
Dockerfile
FROM openjdk:8-jdk-alpine
#将jdk镜像作为基础镜像
MAINTAINER cc <969703029@qq.com>
#作者信息
VOLUME /tmp
VOLUME ~/
#VOLUME是挂载 将/tmp挂载到宿主机 ~/目录也就是用户目录 这个目录笔者用来放工程日志
ADD demo-0.0.1.jar /demo.jar
#将mvn 构建后的jar包放在容器根目录下
RUN sh -c 'touch /demo.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /demo.jar"]
CMD /usr/sbin/sshd -D
build.sh
#!/bin/bash
source /etc/profile
#project build variable
#you can change this code for your project
###START###
#应用名称
APPNAME=demo
#应用端口
APPPORT=9876
#容器端口
INPORT=9876
#宿主机映射端口
OUTPORT=9876
#挂载宿主机目录
HOSTPATH=/cc/logs
#被挂载的容器目录 挂载日志文件
CONTAINNERPATH=/logs/test
#容器名称
CONTAINNERNAME=demo-0.0.1
#镜像名称
MYIMAGE=demo-0.0.1
###END###
#don't change this code
###START###
#cd ../
mvn clean
mvn install
#cd -
# stop all container
docker stop ${CONTAINNERNAME}
# remove all container
docker rm ${CONTAINNERNAME}
# remove old images
docker rmi ${MYIMAGE}
# build jar and image
#mvn package -e -X docker:build -DskipTest
mvn package docker:build
# running container
docker run -it -dp ${OUTPORT}:${INPORT} -v ${HOSTPATH}:${CONTAINNERPATH} --name ${CONTAINNERNAME} ${MYIMAGE} /bin/bash
# push image 推送镜像到阿里私有仓库
#images_id=$(docker images | grep "$MYIMAGE" | awk "{print \$3}")
#echo '================开始推送镜像================'
#echo "镜像id=$images_id ................"
#sudo docker login --username=969703029@qq.com --password=cnmcn registry.cn-qingdao.aliyuncs.com
#sudo docker tag demo-0.0.1 registry.cn-qingdao.aliyuncs.com/chenchun/test:latest
#sudo docker push registry.cn-qingdao.aliyuncs.com/chenchun/test:latest
#echo '================结束推送镜像================'
###END###