Docker容器部署项目
- 优点:可以把整个项目依赖的环境(如java,nginx)代码全部封装到镜像中。之后运行项目只需要通过此镜像就可以,而不需要单独下载各种依赖环境。(镜像更容易分发和移植,在启动项目中不需要,使用大量命令。)
- 理解:可以把容器理解为一个存放环境的箱子。Docker理解为安装包。
docker的安装
- 进入官网docker官网安装
- 直接使用宝塔,搜索docker安装
使用以下命令查看docker是否安装成功docker -v
Dockerfile
- 作用:用于指定构建Docker镜像的方法
- 一般可以参考同类项目的配置文件(如spring项目或vue)
- Dockerfile编写
- FROM依赖的基础镜像
- WORKDIR工作目录
- COPY从本机复制文件
- RUN执行命令
- CMD/ENTRYPOINT指定运行容器时默认执行的命令
部署上线
- 在项目根目录下创建Dockerfile文件,进行配置
# Docker 镜像构建 FROM maven:3.5-jdk-8-alpine as builder # Copy local code to the container image. WORKDIR /app COPY pom.xml . COPY src ./src # Build a release artifact. RUN mvn package -DskipTests # Run the web service on container startup. CMD ["java","-jar","/app/target/user-center-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]
- 将项目上传到服务器(前后端项目)
- 使用命令根据Dockerfile构建镜像
部署好之后的镜像//后端 //-t打标签标识版本信息 docker build -t user-center-backend:v0.0.1 . //前端 docker build -t user-center-frontend:v0.0.1 . //查看已经打包的镜像 sudo docker images
- Docker构建优化:减少尺寸,减少构建时间(比如多阶段构建,可以丢弃之前阶段不需要的内容)
- docker run启动镜像
-p表示要把容器中启动项目的端口映射到本地的哪个端口,//前端 docker run -p 80:80 -v /data/app:/user/share/nginx/html -d user-center-frontend-master:v0.0.1 //后端 docker run -p 8080:8080 -d user-center-backend-master:v0.0.1
-v指定目录,容器的目录和本地的映射/data目录映射
-d启动容器的镜像名称- 端口映射:把本机的资源(实际访问的地址)和容器内部的资源(应用启动端口)进行关联
- 目录映射:把本机的端口和容器应用的端口进行关联
docker常用命令
- Docker exec进入镜像终端调试
docker exec -i -t 【镜像号】 /bin/bash
- 查看镜像信息
docker ps
- 结束已经运行的镜像
docker kill 【容器号】
- 查看后台日志
docker logs
- 强制删除镜像
docker -f rmi 【镜像名】
- 杀死容器
docker kill
Docker平台部署项目
- 云服务商的容器平台(腾讯云,阿里云)
- 面向某个领域的容器平台(后端微信云托管)
容器平台部署的优点
- 不用输入命令来操作,更便利
- 不用再控制台操作,傻瓜式,简单
- 大厂运维,省心
- 额外的能录,比如监控,告警,其他(存储,负载均衡,自动扩缩容,流水线)