Dockerfile
1.Dockerfile就是一个文件
2.包含了一条条指令
3.每一条指令可以构建一层,最终就构建出一个完整的镜像
4.对于开发团队可以提供一个完全一样的环境
5.对于测试只需要拿到Dockerfile文件就可以构建一个新的镜像开始工作了
6.对于运维人员可以实现应用的无缝移植
Dockerfile关键字(以下关键字全部都得大写)
- FROM 基础镜像,当前新镜像是基于哪个镜像的。(如:FROM java:8 )
- MAINTAINER 镜像维护者的姓名和邮箱地址 (如:MAINTAINER zhangsan < xx@163.com> )
- RUN 容器构建时需要运行的命令 (如:RUN <command> 可以有多个run)
- EXPOSE 当前容器对外暴露出的端口号 (如:EXPOSE 8000 暴露该容器的指定的端口给别的容器访问(不是暴露给宿主机访问))
- WORKDIR 指定在创建容器后,终端默认登录的进来的工作目录,落脚点,默认是根目录/
- ENV 用来在构建镜像过程中设置环境变量 (如:ENV key=value )
- ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包(如:ADD java-demo.jar )
- COPY 类似ADD,拷贝文件和目录到镜像中。(如: COPY src dest or COPY [“src”,“desc”])
- VOLUME 数据容器卷,用于数据保存和持久化工作。
- CMD 指定一个容器启动时要运行的命令。DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换
- ENTRYPOINT 指定一个容器启动时要运行的命令。目的和CMD一样,但docker run 之后的参数会追加而不是替换。(如:ENTRYPOINT command param1 param2)
- ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的ONBUILD被触发
windows 使用docker部署一个简单的springboot项目
- 打包一个简单springboot项目
- 新建一个Dockerfile文件(新建一个txt,可随便起文件名,最后把后缀删掉)
- 1.编辑Dockerfile文件 (选中文件右键打开方式->记事本)
FROM java:8
(如果自己没下java:8,自己会下载)MAINTAINER gq<gq@163.com>
ADD day01-0.0.1-SNAPSHOT.jar gq.jar
(改成自己的jar包名)CMD java -jar gq.jar
2.把jar包和Dockerfile文件放到一个文件夹下面,为了方便操作 - 1.进入文件夹下面打开终端输入
docker build -f .\java_project -t demo .
2.通过build的命令去部署 -f 需要构建的Dockerfile文件的位置 -t 设置新的镜像的名称和版本号,也可以写成docker build -f .\java_project -t demo:.0 .
,最后那个.是代表寻址的路径其实是在指定镜像构建过程中的上下文环境的目录 - docker会分层构建直到出现 Successfully字样就说明构建成功,使用docker images 查看镜像
- 最后启动容器
docker run -it --name=gq_demo -p 80:8888 demo
和idea启动日志一模一样 - 打开浏览器输入
http://localhost/index/hello
80可以缺省 - linux与windows的步骤都是差不多的,无非就是路径不一样。一般是用linux部署,这里给使用windows的小伙伴演示一下。