效果图
1、先更新代码
2、再打jar包
3、打docker包
4、部署到docker容器
操作记录
创建一个目录
[TOC]
## dockerfile案例
### 构造一个springboot的jar包
### 创建一个目录,新增dockerfile
```bash
[root@ip-100 dockerfile]# pwd
/root/dockerfile
[root@ip-100 dockerfile]# ls
Dockerfile springboot-docker.jar
[root@ip-100 dockerfile]#
```
### Dockerfile内容
```bash
# FROM命令定义构建镜像的基础镜像,必须是Dockerfile的首个命令
FROM java:8
# 用于指定持久化目录
VOLUME /temp
# 将本地文件添加到容器中
ADD springboot-docker.jar springboot-docker.jar
# 构建镜像时执行的命令
RUN bash -c 'touch /springboot-docker.jar'
# 配置容器,使其可执行化。配合CMD可省去"application",只使用参数
ENTRYPOINT ["java","-Djava.security.egd-file:/dev/./urandom","-jar","-Xmx128m","-Xms128m","/springboot-docker.jar"]
FROM java:8
VOLUME /temp
ADD springboot-docker.jar springboot-docker.jar
RUN bash -c 'touch /springboot-docker.jar'
ENTRYPOINT ["java","-Djava.security.egd-file:/dev/./urandom","-jar","-Xmx128m","-Xms128m","/springboot-docker.jar"]
```
### 打包命令docker build
```bash
1.生成镜像
# docker build -t springboot-docker .
# docker build -f ./Dockerfile -t springboot-docker .
# docker build -f ./Dockerfile -t springboot-docker:0.1 .
[root@ip-100 dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot-docker 0.1 54dcc83613d7 About a minute ago 682MB
springboot-docker latest 54dcc83613d7 About a minute ago 682MB
# 注意:
# 1,命令是在 Dockerfile 所在目录执行;
# 2,一定不能忘了后面的. 此处的 springboot-docker 是实际生成的镜像名
--tag -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
-f :指定要使用的Dockerfile路径
参考: https://www.runoob.com/docker/docker-build-command.html
2.运行镜像
-d : 表示容器在后台运行
--name : 为容器起一个名字
-p : 端口映射,格式为宿主机端口:容器端口,上文中含义是将容器中的端口80映射到宿主机的端口80,对外提供访问服务。
最后一个字段为镜像名称
# docker run --name springboot-docker01 -d -p 8080:8080 springboot-docker
[root@ip-100 dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65bb62a54e55 springboot-docker "java -Djava.securit…" 33 seconds ago Up 31 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp springboot-docker01
宿主机浏览器: http://192.168.192.128:8080/getIpAndPort
3.查看启动日志
docker logs xxx
docker logs -f springboot-docker01
```
### 自定义命令脚本
```bash
# 打包命令
安装git
yum install -y git
下载代码
git clone https://gitee.com/pythonloser/springboot-docker.git
打包jar包
mvn clean install
vim restart.sh
chmod 777 restart.sh
# 更新代码及打包
cd /root/dockerfile/springboot-docker
git pull
cd /root/dockerfile/springboot-docker
mvn clean install
# 复制jar包
rm -rf /root/dockerfile/springboot-docker.jar
cp /root/dockerfile/springboot-docker/target/springboot-docker.jar /root/dockerfile
# 删除容器再重新打包
echo 'stop'
docker stop springboot-docker
echo 'rm'
docker rm springboot-docker
echo 'build'
docker build -f ./Dockerfile -t springboot-docker .
echo 'run'
docker run --name springboot-docker01 -d -p 80:8080 springboot-docker
```
### jdk安装
```bash
一、yum安装jdk,/usr/lib/jvm
# yum -y list java*
# yum install -y java-1.8.0-openjdk-devel.x86_64
# java -version
二、从官网下载包安装jdk
进入oracle官网,java8下载页面http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
1.下载
# wget --no-check-certificate 官网获取的下载地址
2.解压
# tar zxvf jdk1.8.0_144.tar.gz
# mv jdk1.8.0_144 /usr/java/
4.配置环境变量
# vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_144
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
# source /etc/profile
5.验证安装
# java -version
```
### maven安装
```bash
1.下载maven
# wget --no-check-certificate https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
2.解压:
# tar -zxvf apache-maven-3.8.6-bin.tar.gz
# mv apache-maven-3.8.6 /usr/local/
3.更换镜像
# vim /usr/local/apache-maven-3.8.6/conf/setting.xml
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
4.配置环境变量
# vim /etc/profile
MAVEN_HOME=/usr/local/apache-maven-3.8.6
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME PATH
# source /etc/profile
# mvn -v
```
### 重启脚本解读 restart.sh
```bash
[root@ip-100 dockerfile]# cat restart.sh
systemctl stop firewalld
ntpdate time.windows.com
# git 更新
cd /root/dockerfile/springboot-docker
git pull
# 删除原有target包
rm -rf /root/dockerfile/springboot-docker/target
# 打jar包
cd /root/dockerfile/springboot-docker
#mvn clean install
mvn clean install -Dmaven.test.skip=true
# 删除原有包
rm -rf /root/dockerfile/springboot-docker.jar
# 复制新的jar包
cp /root/dockerfile/springboot-docker/target/springboot-docker.jar /root/dockerfile
# 关闭容器
echo 'docker stop springboot-docker'
docker stop springboot-docker
# 删除容器
echo 'rm springboot -docker'
docker rm springboot-docker
echo '路径'
pwd
# 构建镜像包
echo 'build'
cd /root/dockerfile
docker build -f ./Dockerfile -t springboot-docker .
# 运行容器
echo 'run'
docker run --name springboot-docker -d -p 80:8080 springboot-docker
```
### Dockerfile
```bash
FROM java:8
VOLUME /temp
ADD springboot-docker.jar springboot-docker.jar
RUN bash -c 'touch /springboot-docker.jar'
ENTRYPOINT ["java","-Djava.security.egd-file:/dev/./urandom","-jar","-Xmx128m","-Xms128m","/springboot-docker.jar"]
```