这里我使用的是云服务器,Centos7-Linux操作系统
1、maven环境
2、java环境
3、springboot项目
可以去我这个博客了解''配置MAVEN环境-CSDN博客''
可以去'' java环境变量配置-CSDN博客''
先来简单创建一个springboot项目
日志中有BUILD SUCCESS就算是成功了
完成之后你的target目录下会后会生成一个jar包
DockerFile是用来构建Docker镜像的文本文件,是一条条构建镜像所需要的指令和参数构成的脚本
DockerFile内容基础知识
1、每条保留字指令都必须为大写字母且后面要跟随至少一个参数
2、指令按照从上向下,顺序执行
3、#表示注释
每个指令都会创建一个新的镜像层并且对于镜像进行提交
1、Docker执行DockerFile的大致流程
2、Docker从基础镜像运行一个容器
3、执行一条指令并且对于容器做出修改
4、执行类似docker commit的操作提交一个新的镜像层
5、Docker再基于刚提交的镜像运行一个新的容器
6、执行DockeFile 中的下一条指令直到所有指令都执行完成
以下是一些dockerfile文件中的命令
- FROM :指定基础镜像
- MAINTAINER :维护者信息
- RUN :构建镜像时所需要执行的命令
- CMD :用于容器在真正运行后所需要执行的命令,CMD 和 RUN 其实都是执行命令,但是 CMD 用于最后面 注:每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条 CMD 命令,只有最后一条会被执行。
- ENTRYPOINT :其实和 CMD 差不多,具体区别:CMD # 指定容器启动时要执行的命令,只有最后一个会生效,可被替代 ;ENTRYPOINT # 指定容器启动时 要执行的命令,可以追加命令。注:每个 Dockerfile 只能有一条 ENTRYPOINT命令,如果指定了多条 ENTRYPOINT 命令,只有最后一条会被执行。
- ADD :复制文件或目录到容器,如果是压缩文件,会自动解压
- COPY :拷贝文件到容器内,与 ADD 一样但不能解压
- LABEL :用于为镜像添加元数据,一个标识
- ENV :设置环境变量
- EXPOSE :指定于外界交互的端口
- VOLUME :文件挂载,容器与宿主机之间的文件共享功能,等同于 docker run 时的参数-v
- WORKDIR :工作目录相当于 cd
- USER :指定运行容器时的用户名ARG :设置变量
- ONBUILD :该指令只有在当该镜像被用作其他镜像的基础镜像时,才会生效
FROM 我们这里去阿里云容器镜像去找openjdk
这里根据自己的jdk版本进行选择
小伙伴们可以复制下面这个,然后简单更改成自己的项目信息就可以使用了
# 可以从阿里云的容器镜像服务中 找到openjdk,选择相对应的版本 FROM anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/openjdk:17-8.6 # 作者 LABEL authors="Shuling Yan" # 构建镜像时所需要执行的命令,这里作者是在容器内部创建了一个工作目录 RUN mkdir "/home/test" # 这里就是进入创建好的目录 WORKDIR "/home/test" # 将打包后的jar包复制到指定目录(这里我是复制到了创建好的工作目录)下,并重命名 COPY ./yanshuling-0.0.1-SNAPSHOT.jar /home/test/yuan.jar # 运行命令 CMD ["java","-jar","/home/test/yuan.jar"]
这里作者使用的是FinalShell来操作,将打包好的jar包和dockerfile文件上传到自己新建好的目录
进入主目录
cd / #进入主目录
创建文件夹
mkdir yuan
进入自己创建好的目录
用的最多的一种方式
docker build -t 镜像名:tag .
参数用的比较多的就是
使用 docker build -t server:1.0.0 . #打成镜像 -t是给他指定一个标签
注:后面的点不要忘记了
#docker build 最后的 . 号,其实是在指定镜像构建过程中的上下文环境的目录
docker images 查看一下镜像,已经可以看到我们所构建好的镜像了
然后使用启动容器的命令运行完之后,项目也就在服务器上部署完成了
docker run: 创建一个新的容器并运行
-d:后台运行容器,并返回容器ID
--name:为容器指定一个名称
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口。我这里使用的是8080,小伙伴们可以使用别的,但是别忘记了在服务器防火墙哪里一定要将这个端口开放,不然是访问不了的
最后的server:1.0.0使用的就是我们当时构建好的镜像
我们使用docker ps 查看一下这个容器是否运行正常
这里的up状态说明容器启动成功!
我们可以去通过服务器ip+刚才指定的端口,加自己的方法上的路径就可以访问了
和我们在idea中写好的代码一样
至此就结束啦,希望这个可以帮到你们