流程:
我们开发的项目,其实正常的流程应该是通过jenkins拉取gitlab上的代码,通过mvn install等命令构建jar包,一般是springboot/springcloud项目,通过mvn package,打成jar包,然后通过Dockfile,把jar包构建成镜像,再通过镜像进行容器启动
步骤:
- 打成jar包
- 准备Dockerfile配置,构建镜像
- docker images查看镜像是否生成
- 然后进行启动容器
- 开防火墙、安全组、是否正常访问
路径
鉴于学习为目的,我手动上传了sms-admin-service-1.0-SNAPSHOT.jar,Dockerfile
Dockerfile配置信息:
大概意思:
从openjdk8的基础镜像,设置时区,拷贝这个jar包到容器的/opt/lcj下,暴露9898访问
#FROM openjdk:8u312-jdk
#FROM java:8
FROM openjdk:8-jdk-alpine
LABEL maintainer="liuchangjiang"
ENV TZ=Asia/Shanghai
ENV ARGS=""
RUN mkdir /opt/lcj
COPY /opt/jar/sms-admin-service-1.0-SNAPSHOT.jar /opt/lcj/sms-admin-service-1.0-SNAPSHOT.jar
EXPOSE 9898
ENTRYPOINT ["sh","-c", "java $ARGS -jar /opt/lcj/sms-admin-service-1.0-SNAPSHOT.jar"]
执行docker-build构建镜像
执行当前目录下的dockerfile, -t 指定镜像名字
docker build -f ./Dockerfile -t sms-admin .
构建成功:输出
Removing intermediate container 40551c911644
Successfully built 85b531f3c50d
docker images查看所有镜像
启动容器:
-d 后台启动,-p 9898:9898 第一个是外部访问的端口,映射到docker的内部端口9898,—name指定容器名,镜像id
docker run -d -p 9898:9898 --name sms-admin 85b531f3c50d
查看启动的容器:docker ps
开腾讯云/阿里云的安全组就可以访问了
我们就访问 →→→机器ip:9898就可以访问到我们的服务了
规范:
其实企业级的构建镜像流程是
1、jenkins拉取gitlab上的代码
2、通过maven进行install等命令构建jar包(流水线语法或者shell脚本)
3、拷贝jar包到docker的images里
4、推这个镜像到harbor
5、harbor根据推送过来的镜像,再推过去给腾讯云的TKE,进行k8s的集群管理、多节点部署等~
福利-docker命令:
删除某个镜像 docker rmi xxx
删除某个容器 docker rm xxx
查看运行中的容器 docker ps
查看所有容器 docker ps -a
启动容器 docker run -d -p 访问端口:宿主机端口 --name 指定名称 镜像id