目录
前言
一、搭建环境
二、使用步骤
1.引入库
2.读入数据
二、使用步骤
总结
前言
在Centos上使用docker(docker-compose)部署开发环境(nginx,jenkins,mysql),并在jenkins中持续集成发布springboot项目(maven,git)、web前端项目。
一、搭建环境
自己写的一键安装脚本
tip: 用国内docker-compose下载源更快
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
服务器提前安装好docker环境,使用docker-compose来部署开发所需的环境。
version: '3'
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
volumes:
- /usr/local/docker/data/jenkins/jenkins_home:/var/jenkins_home #数据文件挂载
- /etc/localtime:/etc/localtime #同步时间
- /var/run/docker.sock:/var/run/docker.sock#为了可以在docker容器中使用宿主机docker命令
- /usr/bin/docker:/usr/bin/docker
environment:
- 'TZ="Asia/Shanghai"'
- 'JAVA_OPTS=-Duser.timezone=Asia/Shanghai'#解决jenkins时差问题
ports:
- 8080:8080
- 50000:50000
mysql:
image: mysql:5.7
container_name: mysql
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
restart: always
environment:
MYSQL_ROOT_PASSWORD: root #设置root帐号密码
ports:
- 3306:3306
volumes:
- /usr/local/docker/mysql/db:/var/lib/mysql #数据文件挂载
- /usr/local/docker/mysql/conf:/etc/mysql/conf.d #配置文件挂载
- /usr/local/docker/mysql/log:/var/log/mysql #日志文件挂载
nginx:
image: nginx:1.17.10
container_name: nginx
volumes:
- /usr/local/docker/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf #配置文件挂载
- /usr/local/docker/data/nginx/html:/usr/share/nginx/html #静态资源根目录挂载
- /usr/local/docker/data/nginx/log:/var/log/nginx #日志文件挂载
- /usr/local/docker/data/public/cert/:/var/cert #密匙目录
ports:
- 80:80
- 443:443
tips:
1.提前拷贝nginx.conf到指定目录
2.docker 运行后, 执行docker logs -f jenkins时报错:
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
需要修改下目录权限, 因为当映射本地数据卷时,/home/docker/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000
执行如下命令即可:chown -R 1000:1000 /usr/local/data_center/docker/data/jenkins/jenkins_home
二、springboot工程
1.DockerFile文件
在src/main下新建docker文件夹(目录随意,后面对应的路径随之更改即可),并创建DockerFile文件,代码如下:
# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的jar包复制到docker容器的/目录下
ADD storage-0.0.1.jar /storage.jar
# 运行过程中创建一个api.jar文件
RUN bash -c 'touch /storage.jar' && \
echo "Asia/Shanghai" > /etc/timezone
# 声明服务运行在8082端口
EXPOSE 8082
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar","/storage.jar"]
# 指定维护者的名字
MAINTAINER mouxiaoshi
三、Jenkins搭建
1.运行成功后访问Jenkins
运行成功后访问该地址登录Jenkins,第一次登录需要输入管理员密码,可以使用以下命令从容器启动日志中获取管理密码:
docker logs jenkins
或者在 /jenkins_home/secrets/initialAdminPassword 文件中查看初始密码
2.修改插件下载地址
默认下载地址都是海外地址,初次安装非常慢,建议先替换地址
修改default.json
上面的地址改了之后,插件下载还是会很慢找到 /jenkins_home/updates/default.json文件
使用vi编辑文件,如下,替换所有插件下载的url
:1,$s/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g
替换连接测试url
:1,$s/http:\/\/www.google.com/https:\/\/www.baidu.com/g
tips:记得先查看下文件中的插件下载地址,是否与上文中的“updates.jenkins-ci.org”匹配
笔者这里Json里下载地址为:https://updates.jenkins.io/download/
3.安装所需的插件
Maven Integration plugin
Deploy to container Plugin
docker-build-step
Publish Over SSH
NodeJS Plugin
4.配置Jdk
cd 到 存放docker-compose文件的目录,然后进入到Jenkins容器中
docker-compose -f env.yml exec jenkins /bin/bash
查看java安装的路径
which java
5.git
6.maven
7.node js
四、搭建springboot项目
maven构建 跳过test
clean package -Dmaven.test.skip=true
最终执行shell命令将镜像打包到docker中并启动
#!/bin/sh
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=storage
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
#当前日期
DATE=`date +%Y%m%d`
#清除旧容器
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID"
echo "停止旧容器"
docker stop $SERVER_NAME
echo "删除旧容器"
docker rm $SERVER_NAME
fi
# 清除旧镜像
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID"
echo "删除镜像"
docker rmi $IID
fi
#构建镜像
echo "开始构建镜像"
docker build -f ./src/main/docker/Dockerfile -t $SERVER_NAME:v${DATE} ./target
echo "构建镜像成功!"
# 运行docker容器
echo "创建并启动$SERVER_NAME容器..."
docker run --name $SERVER_NAME -d -p 8082:8082 $SERVER_NAME:v${DATE}
echo "$SERVER_NAME容器启动完成"
五、搭建web项目
git
node环境
构建执行shell
# 查看版本信息
npm -v
# 解决存放在Github上的sass无法下载的问题
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass
# 将镜像源替换为淘宝的加速访问
npm config set registry https://registry.npm.taobao.org
# 安装项目依赖
npm install
# 项目打包
npm run build
链接宿主机的ssh把项目部署到docker中的nginx中,需提前在配置中添加ssh service
添加构建后续步骤
docker stop nginx
echo '----stop nginx----'
rm -rf /usr/local/docker/data/nginx/html/web
echo '----rm html dir----'
cp -r /usr/local/docker/data/jenkins/jenkins_home/workspace/data-center-web/dist /usr/local/docker/data/nginx/html/web
echo '----cp dist dir to html dir----'
docker start nginx
echo '----start nginx----'
总结
步骤不会特别难,善于搜索可解决大部分问题,文章只做自己搭建的记录,目录请按自己定义的修改,技术大佬口下留情!