(三)Docker入门dockerfile构建镜像实战
迪丽瓦拉
2025-05-28 20:14:14
0次

3.6 构建java网站镜像

  • 编写 Dockerfile
  • 使用 Maven 或 Gradle 构建 Spring Boot 项目,并将生成的 Jar 文件复制到 Docker 镜像中
  • 使用 Docker 镜像构建命令构建 Docker 镜像
FROM openjdk:11-jre-slim
# 定义环境变量
ENV APP_NAME=my-spring-boot-app \APP_VERSION=1.0.0 \JAVA_OPTS=""# 在容器中创建应用程序目录
RUN mkdir -p /app# 将 Spring Boot 项目的 Jar 文件复制到容器中
COPY target/${APP_NAME}-${APP_VERSION}.jar /app/${APP_NAME}.jar# 声明容器的工作目录
WORKDIR /app# 暴露应用程序端口
EXPOSE 8080# 运行应用程序
CMD ["java", "-jar", "${APP_NAME}.jar", "${JAVA_OPTS}"]

在上面的 Dockerfile 中,我们定义了基于 OpenJDK 11 的 Docker 镜像,设置了一些环境变量,创建了容器中的应用程序目录,并将生成的 Spring Boot Jar 文件复制到容器中。然后,我们声明了容器的工作目录和应用程序端口,并设置了 CMD 指令来运行应用程序。

最后,使用以下命令构建 Docker 镜像:

docker build -t my-spring-boot-app .

其中,. 表示当前目录,my-spring-boot-app 是镜像名称。构建完成后,可以使用以下命令运行容器:

docker run -p 8080:8080 my-spring-boot-app

其中,-p 参数将容器内部的 8080 端口映射到主机上的 8080 端口,my-spring-boot-app 是 Docker 镜像的名称。

3.7 构建redis镜像

构建 Redis 镜像的 Dockerfile 文件示例:

FROM ubuntu:latest# 安装依赖包
RUN apt-get update \&& apt-get install -y gcc make# 下载 Redis 源码并编译安装
WORKDIR /usr/local/src
RUN wget http://download.redis.io/releases/redis-6.2.5.tar.gz \&& tar xzf redis-6.2.5.tar.gz \&& cd redis-6.2.5 \&& make \&& make install# 拷贝 Redis 配置文件
COPY redis.conf /etc/redis.conf# 暴露 Redis 默认端口
EXPOSE 6379# 启动 Redis 服务
CMD ["redis-server", "/etc/redis.conf"]

解释:

使用 FROM ubuntu:latest 作为基础镜像,即使用最新版本的 Ubuntu 镜像。
安装 Redis 的编译依赖包 gcc 和 make。
下载 Redis 源码并解压缩,进入源码目录并编译安装 Redis。
拷贝 Redis 配置文件 redis.conf 到 /etc/redis.conf。
使用 EXPOSE 命令暴露 Redis 默认端口 6379。
使用 CMD 命令启动 Redis 服务,参数为 /etc/redis.conf,即使用 /etc/redis.conf 配置文件启动 Redis。
通过上述 Dockerfile 文件构建 Redis 镜像,命令为:

docker build -t myredis:latest .

构建完成后,使用以下命令启动 Redis 容器:

docker run --name myredis -d -p 6379:6379 myredis:latest

其中,–name 用于指定容器名称,-d 用于指定以后台方式运行容器,-p 用于将容器的端口映射到宿主机的端口上,最后一个参数指定镜像名称。

3.8 部署mysql并初始化

可以通过 Docker 官方提供的 MySQL 镜像来部署 MySQL 数据库,Docker 镜像中的 MySQL 已经预先安装和配置好,我们只需要下载 MySQL 镜像并创建容器即可。

以下是一个示例的 Dockerfile:


FROM mysql:latest# 拷贝初始化脚本到镜像中
COPY init.sql /docker-entrypoint-initdb.d/# 设置环境变量
ENV MYSQL_ROOT_PASSWORD=password
ENV MYSQL_DATABASE=mydatabase
ENV MYSQL_USER=myuser
ENV MYSQL_PASSWORD=mypasswd
ENV LANG zh_CN.UTF-8

以上 Dockerfile 中:

FROM mysql:latest 表示使用官方 MySQL 镜像,并基于该镜像进行扩展。
COPY init.sql /docker-entrypoint-initdb.d/ 表示将我们的初始化 SQL 脚本拷贝到容器内部的 /docker-entrypoint-initdb.d/ 目录下,Docker 在启动容器时会自动执行该目录下的 SQL 脚本。
ENV MYSQL_ROOT_PASSWORD=password 表示设置 MySQL 的 root 用户密码为 password。
ENV MYSQL_DATABASE=mydatabase 表示创建一个名为 mydatabase 的数据库。
ENV MYSQL_USER=myuser 和 ENV MYSQL_PASSWORD=mypasswd 表示创建一个名为 myuser 的用户,并设置其密码为 mypasswd。
在 Dockerfile 所在目录下创建一个名为 init.sql 的文件,文件内容如下:

create database `mydatabase`;
SET character_set_client = utf8;
USE mydatabase;CREATE TABLE IF NOT EXISTS `users` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL,`email` varchar(50) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;INSERT INTO `users` (`name`, `email`) VALUES('Alice', 'alice@example.com'),('Bob', 'bob@example.com'),('Charlie', 'charlie@example.com');

以上 SQL 脚本创建了一个名为 mydatabase 的数据库,并在其中创建了一个名为 users 的表,并插入了一些测试数据。

构建 Docker 镜像:

docker build -t my-mysql .

创建并运行容器:

docker run -d --name my-mysql -p 3306:3306 my-mysql

运行以上命令后,MySQL 数据库就已经成功部署并初始化完成了,我们可以使用任意 MySQL 客户端连接到 localhost:3306 来验证数据库是否正常工作,并且可以查看到 mydatabase 数据库和 users 表已经创建成功。

上一篇:es6+数值扩展

下一篇:[算法] 二分查找

相关内容

热门资讯

AI做攻略、“双向奔赴”……国... 本文转自:人民网人民网记者 许维娜今年国庆假期,AI(人工智能)成了不少年轻人的“旅行搭子”。行前做...
合肥的这个“梗”, 翻篇了 社交平台的评论区,曾长期流传一句专属于合肥的黑色幽默。有人问合肥哪里好玩,本地网友半开玩笑地回复:合...
7万+旅游中高层都在的群,今天... 做旅游这行,资源卡位、渠道互通、项目落地——往往就差一个“对的机会”。我们的行业社群已聚集70,00...
一场帐篷音乐节,如何让井研从“... 帐篷音乐节现场封面新闻记者 周洪攀10月的研溪湿地,晚风里裹着柑橘的清甜与民谣的回响。夜幕降临,10...
白鹤翩翩落星愿,上海迪士尼度假... 10月9日,世界候鸟日前夕,上海迪士尼度假区星愿公园的湖风里多了一分白鹤的灵动。三座白鹤雕塑正式揭幕...
成都锦江边赏初秋枫叶飘飘 目前,成都锦江边国华街枫叶树红了。近年来,国华街附近的几条街都栽种了红枫树,是城区较集中看枫叶的点位...
GBTA:商务旅行正在复苏,但... 亚太正在成为全球商务旅行增长的重要引擎。在经历疫情后的快速反弹之后,全球商务旅行正在进入一个新的增长...
从景区焕新到节赛引流 邹城双节... 齐鲁网·闪电新闻10月9日讯 中秋、国庆“双节”假期,邹城市文化和旅游局提前谋划、周密部署,立足自身...
江山如此多娇 且看石楼今朝 金秋十月,黄河岸畔秋意盎然,丰收盛会喜迎国庆。本次石楼国庆文旅活动以“江山如此多娇,且看石楼今朝”为...
海南国庆假期接待游客475.4... 2026年国庆假期,海南接待游客475.40万人次,较2025年增长13.1%,较2024年增长15...