第
9
章
-
微服务容器部署与持续集成
学习目标:
理解
Dockerfile
的作用,能编写简单的
Dockerfile
脚本完成镜像的构建
完成
Docker
私有仓库的构建,能够运用
Maven
插件完成镜像的创建与上传
理解持续集成,说出持续集成的作用
能够完成
Gogs
的安装与配置,完成代码的提交
能够使用
Jenkins
完成代码的持续集成
1 Dockerfile
1.1
什么是
Dockerfile
Dockerfile
是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个
新的镜像。
1
、对于开发人员:可以为开发团队提供一个完全一致的开发环境;
2
、对于测试人员:可以直接拿开发时所构建的镜像或者通过
Dockerfile
文件构建一个新
的镜像开始工作了;
3
、对于运维人员:在部署时,可以实现应用的无缝移植。
1.2
常用命令
命令
作用
FROM image_name:tag
定义了使用哪个基础镜像启动构建流程
MAINTAINER
user_name
声明镜像的创建者
ENV key value
设置环境变量
(
可以写多条
)
RUN command
是
Dockerfile
的核心部分
(
可以写多条
)
ADD source_dir/file
dest_dir/file
将宿主机的文件复制到容器内,如果是一个压缩文件,
将会在复制后自动解压
COPY source_dir/file
dest_dir/file
和
ADD
相似,但是如果有压缩文件并不能解压
WORKDIR path_dir
设置工作目录
EXPOSE port1 prot2
用来指定端口,使容器内的应用可以通过端口和外界交
互
CMD argument
在构建容器时使用,会被
docker run
后的
argument
覆
盖
ENTRYPOINT
argument
和
CMD
相似,但是并不会被
docker run
指定的参数覆盖
VOLUME
将本地文件夹或者其他容器的文件挂载到容器中
1.3
使用脚本创建镜像
1.3.1
创建
JDK1.8
镜像
步骤:
(
1
)创建目录
mkdir –p /usr/local/dockerjdk8
(
2
)下载
jdk-8u171-linux-x64.tar.gz
并上传到服务器(虚拟机)中
的
/usr/local/dockerjdk8
目录
(
3
)创建文件
Dockerfile
vi Dockerfile
#
依赖镜像名称和
ID
FROM centos:7
#
指定镜像创建者信息
MAINTAINER ITCAST
#
切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD
是相对路径
jar,
把
java
添加到容器中
ADD jdk‐8u171‐linux‐x64.tar.gz /usr/local/java/
#
配置
java
环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH
$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
(
4
)执行命令构建镜像
docker build ‐t='jdk1.8' .
注意后边的空格和点,不要省略
(
5
)查看镜像是否建立完成
docker images
(
6
)创建容器
docker run ‐it ‐‐name=myjdk8 jdk1.8 /bin/bash
果然可以创建哟
~
1.3.2
创建
Eureka
镜像
(
1
)进入控制台,
eureka
工程的目录下,执行
maven
命令
mvn clean package
(
2
)服务器创建
/usr/local/dockereureka
目录, 将生成的
app.jar
上传到服务器的此目
录
(
3
)创建文件
Dockerfile
FROM jdk1.8
VOLUME /tmp