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

相关推荐

  • C语言中的操作符(Operators)对数据进行运算的符号

    C语言中的操作符(Operators)是对数据进行运算的符号,分为多种类型,支持从基本算术到复杂的逻辑操作。以下是C语言操作符的详解: 1. 算术操作符(Arithmetic Operators) 用于执行基本数学运算: 示例: 2. 关系操作符(Relational Operators) 用于比较两个值,结果为布尔值: 示例: 3. 逻辑操作符(Logic…

    2024年11月22日
    00
  • 在Java中 ArrayList 和 LinkedList 实现 List 接口类

    在Java中,ArrayList 和 LinkedList 都是实现了 List 接口的类,但它们在底层实现和使用场景上有显著的区别。以下是它们的主要区别: 1. 底层实现ArrayList基于动态数组实现。元素是连续存储的,每个元素都可以通过索引直接访问。LinkedList基于双向链表实现。每个元素由节点(Node)存储,节点包含数据和前后节点的引用。 …

    2024年12月2日
    00
  • Spring Boot 项目中对接海康摄像头的视频流播放

    在 Spring Boot 项目中对接海康摄像头的视频流播放,通常需要利用摄像头的 RTSP 协议,将实时视频流解码并转发到前端以实现播放功能。以下是具体实现步骤: 1. 项目准备 前置条件 RTSP 流地址格式 海康摄像头的 RTSP 流地址格式通常为: 例如: 2. 后端实现视频流转发 为了在后端转发视频流到前端,我们需要解码 RTSP 流并将其转为适配…

    2024年11月24日
    00
  • 出现 ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES) 错误的解决方法

    出现 ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES) 错误,通常是由于 MySQL 用户身份验证失败,可能的原因包括密码错误、用户权限配置问题或身份验证插件不匹配等。以下是解决方法: 1. 检查密码是否正确确保输入的密码与 MySQL 中为…

    2024年11月26日
    00
  • Redis中如何使用lua脚本redis与lua的相互调用方法

    在 Redis 中,Lua 脚本 提供了一种强大的方式来执行原子操作,可以在 Redis 服务器上直接执行 Lua 代码,从而避免了多次网络往返和保证操作的原子性。Redis 内置了对 Lua 脚本的支持,通过 EVAL 命令来执行脚本,EVALSHA 则用于执行已经加载到 Redis 服务器的脚本。1. Redis 与 Lua 脚本的基本交互1.1 基本的…

    2024年11月28日
    00
  • 在微信公众号开发中获取 access_token 调用微信服务器端接口

    在微信公众号开发中,获取 access_token 是调用微信服务器端接口的第一步。access_token 是接口调用的凭据,可以通过微信公众号的接口调用。 以下是获取 access_token 的步骤和代码示例: 1. 获取 Access Token 的接口 调用微信服务器接口获取 access_token: 接口地址: 返回示例: access_tok…

    2024年12月3日
    00
  • 使用 Flutter 实现酷炫的粒子动画,可以通过 Shader 来提升效果

    使用 Flutter 实现酷炫的粒子动画,可以通过 Shader 来提升效果。这种方法结合 Flutter 的强大绘图功能和 GLSL 的灵活性,可以创造出高性能且自定义程度极高的视觉效果。以下是实现的基本步骤和核心代码: 核心思想使用 Flutter 的 CustomPainter 绘制粒子。通过 FragmentProgram (GLSL Shader)…

    2024年12月2日
    00
  • 使用Docker搭建Deepl开源翻译组件使用教程

    DeepL 是一个优秀的翻译工具,目前官方并未提供直接的开源版本或本地部署方案。不过,社区中存在一些基于 DeepL API 的开源项目,可以通过 Docker 搭建一个翻译服务接口。以下是使用 Docker 搭建 DeepL 翻译组件的详解。 一、准备工作 二、开源项目选择 1. 使用社区项目封装的 DeepL API 服务 社区中有一些开源项目,基于 D…

    2024年11月23日
    00
  • 通过 PHP 读取微软邮箱(Outlook/Office 365 邮箱)

    通过 PHP 读取微软邮箱(Outlook/Office 365 邮箱)邮件,通常需要使用 Microsoft Graph API,因为微软逐步淘汰了基于用户名和密码的 IMAP/SMTP 方式。Microsoft Graph API 支持 OAuth2.0 认证,可以安全地访问和管理用户邮件。 以下是实现读取微软邮箱邮件的完整示例。 实现步骤 1. 准备工…

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

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

    2024年11月24日
    00
  • 解决 WordPress 后台无法登录的常见问题

    WordPress 后台无法登录是一个常见问题,可能由多种原因引起,包括插件冲突、主题问题、数据库错误或用户账户问题。以下是详细的排查和解决步骤: 1. 检查登录页面 URL 确保您访问的是正确的 WordPress 登录页面: 2. 清除浏览器缓存和Cookie 3. 重置密码 用新密码尝试登录。 4. 禁用插件 某些插件可能会导致登录问题。尝试通过以下方…

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

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

    2024年11月25日
    00
  • 在 .NET 环境下,使用 OpenTK 为 SkiaSharp 提供 OpenGL 支持是一个常见的方式

    在 .NET 环境下,使用 OpenTK 为 SkiaSharp 提供 OpenGL 支持是一个常见的方式,可以高效地进行 2D 图形渲染。下面是具体如何实现和一些关键概念的介绍: 背景知识 实现步骤 1. 添加必要的 NuGet 包 确保你的项目安装了以下 NuGet 包: 2. 创建 OpenGL 上下文 使用 OpenTK 创建一个 OpenGL 上下…

    2024年12月8日
    00
  • 在 Neo4j 中存储 Liquidity Structure(的层次和关联结构)

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

    2024年12月2日
    00
  • Android Studio 国内镜像,加速下载和构建过程

    在国内使用 Android Studio 时,由于访问 Google 的官方资源(如 Gradle 和 SDK)速度较慢甚至无法访问,可以通过配置国内镜像源来加速下载和构建过程。以下是详细配置步骤: 1. 配置 Gradle 国内镜像 Gradle 是 Android Studio 构建项目的重要工具,其依赖库通常托管在 Google Maven 和 JCe…

    2024年11月25日
    00

发表回复

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

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信