Docker-compose部署java项目
Docker-compose部署java项目
前置条件:
- 安装docker
- 安装docker-compose
- 防火墙啥的都设置好
dockerfile-demo
FROM java:8
VOLUME /tmp
WORKDIR /
ADD ./project-demo-1.0.0.jar project-demo.jar
RUN bash -c 'touch /project-demo.jar'
EXPOSE 8080
ENTRYPOINT ["java","-jar","/project-demo.jar"]
compose-project-demo.yaml
version: '3'
# 关于网络,如果用到mysql或者redis,并且希望在同一个网络,那么就可以直接使用同一个网络名
# docker network create project-demo_bridge
networks:
project-demo_bridge:
driver: bridge
services:
project-demo:
container_name: project-demo
image: project-demo:1.0
restart: always
volumes:
# 同步时间
- /etc/localtime:/etc/localtime:ro
# 如果项目有些日志或者写文件,需要同步到宿主机器,也需要定义相应的卷
- ./data:/etc/project-demo/data
- ./log:/etc/project-demo/log
ports:
- 8080:8080
networks:
- project-demo_bridge
start-project-demo.sh
#! /usr/bin/bash
PROJECT_NAME=project-demo
containerName=$PROJECT_NAME:1.0
imagesName=$PROJECT_NAME:1.0
# 定义一个名称变量
network_name="$PROJECT_NAME_bridge"
filterName=`docker network ls | grep $network_name | awk '{ print $2 }'`
if [ "$filterName" == "" ]; then
# 不存在就创建
docker network create $network_name
echo "Created network $network_name success!!"
fi
existContainer=`docker inspect --format '{{.State.Running}}' ${containerName}`
function delExistImagesAndContainer() {
if [ "${existContainer}" == "true" ]; then
docker stop ${containerName}
echo "容器:${containerName}已停止"
docker rm ${containerName}
echo "容器:${containerName}已删除"
docker rmi ${imagesName}
echo "镜像:${containerName}已删除"
fi
}
function buildJar(){
echo "正在构建jar镜像"
# 其实这个构建指令是可以直接写到compose的那个启动文件中的
docker build -f dockerfile-$PROJECT_NAME -t $PROJECT_NAME:1.0 .
echo "镜像构建完成"
echo "正在创建并启动容器"
docker-compose -f ./compose-$PROJECT_NAME.yaml up -d
}
delExistImagesAndContainer
buildJar
分类:
docker容器技术
, linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」