一个简单的 Dockerfile 文件示例如下:
# 基于 JAVA 镜像构建FROM openjdk:8u212-jre# 配置参数ENV TZ=Asia/ShanghaiENV JAVA_OPTS="-Xms128m -Xmx256m -Dfile.encoding=UTF-8"# 设置时区RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 设置工作目录WORKDIR /app# 复制 jar 包到镜像里COPY target/my-app.jar /app/my-app.jar# 暴露端口EXPOSE 8080# 配置启动命令CMD java $JAVA_OPTS -jar /app/my-app.jar --server.port=8080简单介绍下上述 Dockerfile 示例的语法:
-
FROM: 指定基础镜像,这里是基于开源的 Java 8 JRE 镜像 。 -
ENV: 设置环境变量,这里配置了时区、JVM 参数等 。 -
RUN: 执行命令,这里用来设置时区 。 -
WORKDIR: 设置工作目录 , 相当于 cd 命令,之后的命令都在这个目录执行 。 -
COPY: 复制文件到镜像,这里复制了编译好的 Java jar 包 。 -
EXPOSE: 声明暴露的端口,这里是 8080 。 -
CMD: 启动命令,这里配置了启动 Java 程序的命令 。
docker build -t my-app .其中 -t 参数指定了镜像的名称和标签(默认为 latest),. 表示当前目录寻找 Dockerfile 文件 。要运行构建好的镜像 , 可以使用以下命令:
docker run -p 8080:8080 my-app其中 -p 参数指定了容器内外部的端口映射关系 , my-app是镜像的名称 。这样我们的 Java 服务就可以在容器里运行,并能够通过宿主机的 8080 端口访问了 。
5. Docker Compose 一键安装这里给大家继续分享我的
Docker Compose 一键安装脚本,大家可以直接使用 。sudo curl -L "https://Github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose --version //The following appears,your docker-compose is installation success.在国内网络中可能遇到 docker-compose 文件下载失败、超时 , 大家可直接上传本地已经下载好的 docker-compose 文件,也可以私聊我获取最新 docker-compose 文件 。6. 使用 Docker Compose 简化应用部署除了 Docker 命令,我们还可以使用
Docker Compose 来简化多个容器的管理和部署 。在实际开发中,一个应用程序通常不是单独运行的 , 而是需要与其他服务(例如数据库、缓存、消息队列等)进行交互 。这些服务也可以使用 Docker 来运行,但是如果每个服务都需要单独使用
docker run命令来启动,那么就会非常繁琐和容易出错 。为了解决这个问题,可以使用 docker-compose 来定义和运行多个容器之间的依赖和协作关系 。docker-compose 是一个工具,可以让开发者使用一个 YAML 文件(通常命名为docker-compose.yml)来描述多个容器之间的配置,包括镜像、端口、环境变量、挂载卷、网络等 。使用 docker-compose 可以让开发者一次性地启动或停止所有相关的容器 , 以及方便地管理容器之间的通信 。一个简单的
docker-compose.yml 示例如下:version: '3'services: waynboot-mobile-api: image: ibm-semeru-runtimes:open-17-jdk container_name: mobile volumes: - /etc/localtime:/etc/localtime - /home/logs:/home/logs - /opt/waynboot-mall/upload:/opt/waynboot-mall/upload - ./jars/waynboot-mobile-api.jar:/home/app/waynboot-mobile-api.jar restart: always command: java -Xms512m -Xmx512m -Duser.timezone=GMT+8 -Dfile.encoding=utf-8 -jar /home/app/waynboot-mobile-api.jar ports: - "82:82" environment: - TZ=Asia/Shanghai - LOG_PATH_PREFIX=/home/logs - UPLOAD_DIR=/opt/waynboot-mall/upload  .NETwork_mode: "host" # 依赖于redis和MySQL,在启动本服务之前会先启动依赖的服务 depends_on: - redis - mysql - rabbitmq - elasticsearch
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 这篇文章彻底让你了解Java与RPA
- 提升SEO优化排名的两大法宝:快速决策与快速学习
- SEO经理必须掌握的网站图片优化与内容质量评估规范
- 微软 Edge 浏览器支持双引擎同时搜索功能,便利与槽点并存
- Go 内存优化与垃圾收集
- C++质数检测器的设计与实现?
- 羽毛球的起源与世界赛事的发展
- 再夺视帝的陈豪与陈茵媺在内地恩爱逛街 遇见粉丝一一开心合影
- 人民的名义:梁家势力不再,为何祁同伟还是不敢与梁璐彻底切割?
- 一个想上位、一个想白嫖,于正与祝绪丹的瓜,揭开娱乐圈的遮羞布
