Docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像方法

使用 Docker 快速部署 Nginx、Redis、MySQL、Tomcat 以及制作镜像

通过 Docker,开发者可以快速部署和管理各种服务。本文介绍如何快速使用 Docker 部署 NginxRedisMySQLTomcat,以及如何制作自定义镜像。

1. Docker 基础准备

安装 Docker

如果还未安装 Docker,可按照以下步骤安装:

  • Linux (Ubuntu)
sudo apt update
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker

验证 Docker 安装

运行以下命令检查安装:

docker --version

2. 部署 Nginx

步骤 1:拉取 Nginx 镜像

docker pull nginx

步骤 2:运行容器

docker run -d --name nginx-container -p 8080:80 nginx
  • -d:后台运行容器。
  • --name:容器名称。
  • -p:将本地 8080 端口映射到容器内的 80 端口。

步骤 3:验证 Nginx 服务

访问 http://localhost:8080,可以看到 Nginx 默认页面。

绑定自定义配置

将自定义 Nginx 配置文件绑定到容器:

docker run -d --name nginx-container -p 8080:80 -v /path/to/nginx.conf:/etc/nginx/nginx.conf nginx

3. 部署 Redis

步骤 1:拉取 Redis 镜像

docker pull redis

步骤 2:运行容器

docker run -d --name redis-container -p 6379:6379 redis

步骤 3:验证 Redis

进入 Redis 容器并使用 CLI:

docker exec -it redis-container redis-cli
ping

返回 PONG 表示运行正常。

绑定配置文件

绑定 Redis 配置文件:

docker run -d --name redis-container -p 6379:6379 -v /path/to/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf

4. 部署 MySQL

步骤 1:拉取 MySQL 镜像

docker pull mysql:latest

步骤 2:运行容器

docker run -d --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=yourpassword mysql
  • -e:设置环境变量(如 MySQL 的 root 密码)。

步骤 3:验证 MySQL

进入容器并登录 MySQL:

docker exec -it mysql-container mysql -u root -p

绑定数据卷

绑定本地数据目录以持久化数据:

docker run -d --name mysql-container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=yourpassword -v /path/to/mysql-data:/var/lib/mysql mysql

5. 部署 Tomcat

步骤 1:拉取 Tomcat 镜像

docker pull tomcat:latest

步骤 2:运行容器

docker run -d --name tomcat-container -p 8080:8080 tomcat

步骤 3:访问 Tomcat

访问 http://localhost:8080,可以看到 Tomcat 的默认页面。

绑定自定义 Web 应用

绑定本地 WAR 文件:

docker run -d --name tomcat-container -p 8080:8080 -v /path/to/app.war:/usr/local/tomcat/webapps/app.war tomcat

6. 制作自定义 Docker 镜像

步骤 1:创建 Dockerfile

以创建自定义 Nginx 镜像为例,创建一个名为 Dockerfile 的文件:

# 基础镜像
FROM nginx:latest

# 复制本地配置文件到容器
COPY ./nginx.conf /etc/nginx/nginx.conf

# 暴露端口
EXPOSE 80

步骤 2:构建镜像

docker build -t custom-nginx .
  • -t:指定镜像名称。

步骤 3:运行自定义镜像

docker run -d --name custom-nginx-container -p 8080:80 custom-nginx

7. Docker Compose 快速部署

为了同时管理多个服务(如 Nginx、Redis、MySQL 和 Tomcat),可以使用 Docker Compose。

步骤 1:创建 docker-compose.yml 文件

version: '3.8'

services:
  nginx:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf

  redis:
    image: redis
    ports:
      - "6379:6379"

  mysql:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: yourpassword
    ports:
      - "3306:3306"
    volumes:
      - ./mysql-data:/var/lib/mysql

  tomcat:
    image: tomcat
    ports:
      - "8081:8080"
    volumes:
      - ./app.war:/usr/local/tomcat/webapps/app.war

步骤 2:启动所有服务

docker-compose up -d

步骤 3:验证服务

  • Nginx: http://localhost:8080
  • Redis: 通过 Redis CLI 验证。
  • MySQL: 连接到 localhost:3306
  • Tomcat: http://localhost:8081

8. 总结

  • 快速部署单个服务:通过 docker run 命令可以快速部署各服务。
  • 数据持久化:通过绑定本地数据卷确保数据不会因容器重启而丢失。
  • 制作镜像:使用 Dockerfile 制作自定义镜像,满足特定需求。
  • Docker Compose 管理多个服务:编写 docker-compose.yml 文件轻松部署和管理复杂应用。

通过以上方式,你可以快速部署和管理所需的服务,并使用 Docker 提高开发效率和环境一致性。

发布者:myrgd,转载请注明出处:https://www.object-c.cn/4563

Like (1)
Previous 2024年11月25日 下午8:32
Next 2024年11月26日 上午10:57

相关推荐

  • 在 Neo4j 中存储 Liquidity Structure(的层次和关联结构)

    在 Neo4j 中存储 Liquidity Structure(流动性结构)的层次和关联结构时,可以使用其图数据库的特性:节点(Node)表示实体,关系(Relationship)表示这些实体之间的连接。流动性结构通常涉及多层次的实体(如母公司、子公司、账户、资金池等)及其关联关系。 以下是具体实现步骤: 1. 设计数据模型节点类型:实体层次(Hierarc…

    2024年12月2日
    00
  • PHM技术:一维信号时序全特征分析(统计域/频域/时域)信号处理

    PHM(Prognostics and Health Management,预测与健康管理)技术中的一维信号时序特征分析,旨在从信号中提取与设备健康状态相关的多种特征。以下是针对统计域、频域和时域特征分析的详细介绍和常见方法。 1. 时域特征分析时域特征直接从原始信号提取,描述信号的统计特性或时间行为。这些特征反映信号的幅值、变化趋势和波形形状。1.1 常用…

    2024年11月28日
    00
  • 在 Delphi 中创建一个像 C# 那样的 DLL 类库(即面向对象的 DLL)

    在 Delphi 中创建一个像 C# 那样的 DLL 类库(即面向对象的 DLL)可以通过以下步骤实现:1. 创建 Delphi DLL 项目打开 Delphi。选择 File > New > Other > Dynamic-Link Library。在新项目中,默认生成的代码通常是 exports 部分,其中包含了 DLL 导出的函数。2. 定义类你可以在…

    2024年11月29日
    00
  • 多方面的优化包括启动时间、React Native 速度提升 550% 运行时性能以及渲染效率的提升

    React Native 速度提升 550% 可能涉及多方面的优化,包括启动时间、运行时性能以及渲染效率的提升。这通常是通过框架改进、代码优化和工程实践的结合来实现的。以下是实现 React Native 性能大幅提升的一些关键方法和策略: 1. 启动时间优化 1.1 减少 JS Bundle 大小 1.2 预加载资源 1.3 使用优化的原生模块 2. 渲染…

    2024年12月7日
    00
  • 在 Android 中 Matrix 实现图像的缩放和裁剪将 Glide 图像从 fitCenter 转换为 centerCrop

    在 Android 中,Matrix 可以用来实现图像的缩放和裁剪逻辑。要将 Glide 图像从 fitCenter 转换为 centerCrop,需要通过 Matrix 计算变换逻辑。以下是使用 Kotlin 实现的方法:实现步骤计算目标变换矩阵:根据目标宽高比,判断是否需要横向或纵向裁剪。设置 Matrix:使用 Matrix 执行缩放和平移操作。应用到…

    2024年12月3日
    00
  • pywebview 页面请求数据总是报错:TypeError: Cannot read properties of undefined (reading ‘api’)

    pywebview 中的 TypeError: Cannot read properties of undefined (reading ‘api’) 错误通常意味着 JavaScript 代码试图访问一个未定义的对象或属性(如 api)。这种问题通常出现在 Python 与前端 JavaScript 交互时,可能是由于以下原因:可能的原因及解决方法:Jav…

    2024年11月27日
    00
  • 在 Spring Boot 中实现 Callback 回调的常用方法

    在 Spring Boot 中实现 Callback(回调) 通常用于处理外部系统调用你的服务接口。例如,当一个第三方服务完成某项操作后通知你的应用完成结果。以下是实现回调的完整流程: 1. 回调的基本流程 2. 示例代码 2.1 创建回调接口 假设第三方服务会通过 POST 请求回调数据到 /callback,并发送如下 JSON 数据: 实现代码如下: …

    2024年11月24日
    00
  • 若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)

    若依(Ruoyi)是一款基于 Spring Boot 的企业级开发框架,在此框架中集成 X-File-Storage 框架来实现图片上传到阿里云 OSS(对象存储服务)是一个常见的需求。通过这个集成,你可以便捷地将图片或文件上传到阿里云 OSS,并在系统中管理和访问这些文件。以下是详细的步骤说明: 1. 安装 X-File-Storage 框架 X-File…

    2024年11月25日
    00
  • uni-app 中的一个 API,uni.getLocation用于获取用户的地理位置信息

    uni.getLocation 是 uni-app 中的一个 API,用于获取用户的地理位置信息。它可以通过 GPS 或网络方式获取当前位置,并提供包括经纬度、速度、精度等信息。这个 API 在移动端(如安卓、iOS)和 H5 平台上均可使用。基本语法 参数说明type(可选):指定位置的坐标类型。支持 ‘wgs84’ 和 ‘gcj02’,默认值为 ‘wgs…

    2024年11月28日
    00
  • 在 Go 语言中,对文件的基础操作介绍

    在 Go 语言中,文件操作是基础技能之一,主要通过 os、io 和 io/ioutil 等标准库完成。以下是对文件操作的全面介绍,帮助你在 Go 语言的“成神之路”上迈出关键一步! 1. 创建文件使用 os.Create 创建文件,如果文件已存在会被清空。示例代码 2. 打开文件使用 os.Open 打开文件(只读模式),使用 os.OpenFile 可以指…

    2024年12月2日
    00
  • java中使用 Arrays.asList()新增报错问题解决方法

    Arrays.asList() 返回的是一个固定大小的列表。如果你尝试使用该列表进行添加、删除等修改操作,会抛出 UnsupportedOperationException 异常。这是因为 Arrays.asList() 返回的列表背后是一个数组,它的大小是固定的,不能进行动态修改。解决方法使用 ArrayList 包装 Arrays.asList() 的结…

    2024年12月2日
    00
  • 微信小程序开发中使用 Tailwind CSS 提高开发效率和代码的可维护性

    Tailwind CSS 是一个利用原子化 CSS 类来构建用户界面的框架,在微信小程序开发中使用 Tailwind CSS 可以提高开发效率和代码的可维护性。以下是在微信小程序中使用 Tailwind CSS 进行原子 CSS 开发的具体步骤: 安装 Tailwind CSS 配置 Tailwind CSS 引入样式:在微信小程序的全局样式文件app.wx…

    2024年12月15日
    00
  • Android 解决 “Module was compiled with an incompatible version of Kotlin“

    “Module was compiled with an incompatible version of Kotlin” 错误通常出现在 Android 开发中,因为模块的 Kotlin 编译器版本与项目中的 Kotlin 编译器版本不匹配。以下是解决此问题的方法: 1. 检查 Kotlin 插件版本步骤:打开 Android Studio。点击顶部菜单的 …

    2024年11月26日
    00
  • wordpress 蜘蛛记录插件的功能记录网站的所有访问记录

    要在 WordPress 网站上实现类似的功能,通常你需要开发一个 WordPress 插件。以下是一步步创建一个插件的指南,它可以记录访问者的访问记录,区分搜索引擎蜘蛛,并保存访客的 IP 地址。 1. 创建插件目录和文件 2. 插件文件结构 插件的文件结构大概如下: 3. 编写插件代码 在 visitor-tracker.php 文件中,添加以下代码: …

    2024年11月22日
    00
  • 在 Apache Spark 中,任务的切分(Task Division)机制

    在 Apache Spark 中,任务的切分(Task Division)是 Spark 将应用程序逻辑划分为多个并行任务的核心机制。任务切分的主要原则是基于数据分区和操作算子。以下是任务切分的核心原则和关键影响因素: 1. Spark 任务切分的基本概念 2. 任务切分的原则 2.1 基于分区(Partition)的切分 2.2 基于依赖关系(Depend…

    2024年11月25日
    00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信