创建Docker容器--部署java项目

该博客详细解析了Docker run命令的参数,包括后台运行容器、端口映射、添加hosts、定义容器名、自动重启、工作目录设置、时区挂载、数据卷挂载以及与其他容器的链接。同时,它还介绍了Java应用的启动参数,如内存分配、时区设置、JVM优化等,用于提升应用性能。

示例:  

docker run -d -p 11228:11228  --add-host kafka:10.0.11.81  --name boot-JindunFanTest 
--restart=always --workdir=/tmp/ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime 
-v /home/jindunFan/data/:/tmp/ -v /home/jindunFan/dataFile/:/tmpFile/ 
--link jindunFanRedisTest:jindunFanRedisTest --link testMysql:testMysql   
java:8 java -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08 -jar 
-Xmx1024m -Xmn356m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/laboratory.hprof 
-Dspring.profiles.active=test  /tmp/blade-api.jar >/dev/null 2>&1   

解析:

  • -d   后台运行容器,并返回容器ID;

  • -p 11228:11228  容器内部端口映射到主机的端口
  • --add-host kafka:10.0.11.81   编辑hosts文件,添加kafka 节点配置
  • --name boot-JindunFanTest   定义容器名称
  • --restart=always  docker重启后容器自动重启
  • --workdir=/tmp/    开辟容器内部工作目录
  • -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime  挂载时区
  • -v /home/jindunFan/data/:/tmp/  -v /home/jindunFan/dataFile/:/tmpFile/   挂载工作目录
  • --link jindunFanRedisTest:jindunFanRedisTest  --link testMysql:testMysql 链接redis 、链接mysql
  • java:8 java   执行java8
  • -Djava.security.egd=file:/dev/./urandom  加强随机数生成功能
  • -Duser.timezone=GMT+08  设置东八区
  • -Xmx1024m jvm最大内存数
  • -Xmn356m  程序初始化的时候内存栈的大小
  • -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/laboratory.hprof  当堆内存空间溢出时输出堆的内存快照。
  • -Dspring.profiles.active=tes  设置配置文件
  • >/dev/null 2>&1  不生成nohup文件

使用 `docker-compose` 部署 Java 应用程序通常涉及以下几个核心步骤:构建镜像、编写 `docker-compose.yml` 文件以及启动服务。以下是一个完整的部署流程,结合了多个引用内容中的配置建议。 ### ### 准备工作 1. **确保已安装 DockerDocker Compose** - 安装 Docker:请参考官方文档进行安装。 - 安装 Docker Compose: ```bash sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` 然后赋予执行权限: ```bash sudo chmod +x /usr/local/bin/docker-compose ``` 验证安装是否成功: ```bash docker-compose --version ``` 2. **准备 Java 应用的 Docker 镜像** 如果你已经通过 `docker-maven-plugin` 插件在本地构建好了镜像,可以直接使用它。否则,可以创建一个简单的 `Dockerfile` 来构建镜像: ```dockerfile FROM openjdk:8-jdk-alpine COPY your-application.jar app.jar ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"] ``` 构建镜像: ```bash docker build -t your-java-app . ``` ### ### 编写 docker-compose.yml 文件 在项目根目录下创建 `docker-compose.yml` 文件,定义服务、网络、卷等资源。以下是一个典型的 Java 应用配置示例: ```yaml version: '3' services: java-app: image: your-java-app container_name: java-app-container ports: - "8080:8080" environment: - SPRING_PROFILES_ACTIVE=prod volumes: - ./logs:/var/log/java-app command: [ "java", "-Djava.security.egd=file:/dev/./urandom", "-Dfile.encoding=UTF-8", "-Duser.timezone=GMT+08", "-XX:+UseContainerSupport", "-XX:MaxRAMPercentage=50", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:ParallelGCThreads=8", "-XX:ConcGCThreads=4", "-XX:+TieredCompilation", "-XX:+UseStringDeduplication", "-XX:+OptimizeStringConcat", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/opt/xxxxxx/heapdump", "-jar", "/app.jar" ] ``` ### ### 启动服务 运行以下命令启动容器: ```bash docker-compose up -d ``` 查看容器状态: ```bash docker-compose ps ``` 如果需要日志信息,可以使用: ```bash docker-compose logs -f ``` ### ### 停止和清理 停止服务: ```bash docker-compose down ``` 如果你想删除所有相关的容器和网络: ```bash docker-compose down -v ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangjie827

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值