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

相关推荐

  • 微信小程序的 RequestTask.onChunkReceived 接口接收二进制数据流

    微信小程序的 RequestTask.onChunkReceived 接口允许接收分块的二进制数据流(如视频或音频流),但在小程序环境中,由于不支持 TextDecoder,处理这些数据时需要采用其他方法。 解析数据流的方案 模拟 TextDecoder 功能 如果需要将 ArrayBuffer 转换为字符串(如 UTF-8 编码),可以通过自定义方法模拟 …

    2024年11月26日
    00
  • 在使用 uni-app 开发小程序或移动端应用时 title image失效问题

    在使用 uni-app 开发小程序或移动端应用时,若发现 分享的标题(title) 和 图片(image) 配置无效,可能是由于配置错误、平台限制或代码逻辑问题。以下是排查和解决问题的详细指南: 1. 确保正确使用分享 API onShareAppMessage(自定义转发) 确保在 pages 的页面代码中正确使用了 onShareAppMessage 方…

    2024年11月25日
    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
  • python反爬-图像验证码与滑块验证码的跳过反selenium检测,动态ip等问题

    针对反爬措施,Python可以使用以下策略来跳过图像验证码与滑块验证码、反检测Selenium,以及通过动态IP规避限制。这是一个分步说明: 1. 图像验证码的跳过与破解1.1 图像验证码处理对于简单的图像验证码,可以使用 OCR 技术直接识别验证码内容。常用库包括:Tesseract-OCR: 一款开源 OCR 工具。Pytesseract: Tesser…

    2024年11月28日
    00
  • JavaScript 前端开发:从入门到精通的方法

    JavaScript 是前端开发的核心语言,它与 HTML 和 CSS 一起构成了 Web 开发的基础。要从入门到精通 JavaScript 前端开发,需要系统化的学习方法和实践。以下是详细的方法和步骤。 1. 理解 JavaScript 的基础 1.1 学习基础语法 1.2 理解函数 箭头函数: 1.3 掌握 DOM 操作 修改内容: 监听事件: 1.4 …

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

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

    2024年11月23日
    00
  • 在进行 Java 单元测试时,遇到找不到类名的错误

    在进行 Java 单元测试时,遇到找不到类名的错误,通常是由于以下几个原因引起的。下面是一些常见问题及其解决方法:1. 类路径(Classpath)问题最常见的原因是编译后的类文件没有正确地包含在类路径中,或者类文件没有被正确加载到测试框架中。要解决这个问题,确保以下几点:解决方法:确认类是否存在:首先确保测试类和目标类都已经编译,并且在正确的目录中。检查 …

    2024年11月28日
    00
  • 在使用 VS Code 和 Keil 协同开发 STM32 程序

    在使用 VS Code 和 Keil 协同开发 STM32 程序时,可以利用 Keil 强大的编译器 和 VS Code 的高效代码编辑功能,结合起来提高开发效率。以下是实现协同开发的详细步骤: 前置准备安装 Keil确保已安装 Keil MDK-ARM,并配置好开发环境。Keil 下载地址:Keil 官方网站安装 VS Code下载并安装最新版本的 VS …

    2024年12月1日
    00
  • AI视觉领域优秀的开源项目和框架

    AI视觉领域有很多优秀的开源项目和框架,可以满足不同的需求,从计算机视觉任务(如目标检测、图像分类)到复杂的视觉应用(如生成对抗网络、视频分析等)。以下是一些流行的开源框架、工具库和平台: 1. 通用计算机视觉框架 1.1 OpenCV 1.2 PyTorch Vision (TorchVision) 1.3 MMDetection 2. 图像分割与生成 2…

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

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

    2024年12月2日
    00
  • 在 WPF 中使用 Vlc.DotNet 和 LibVLCSharp.WPF 两种库来进行 VLC 的二次开发

    在 WPF 中使用 Vlc.DotNet 和 LibVLCSharp.WPF 两种库来进行 VLC 的二次开发,可以实现丰富的视频播放功能,比如播放本地视频、流媒体、控制播放、获取视频信息等功能。以下是对两者的介绍及开发步骤。 一、Vlc.DotNet 和 LibVLCSharp 的对比 特性 Vlc.DotNet LibVLCSharp.WPF 开发活跃度…

    2024年12月3日
    00
  • 微信小程序中,通过Node.js连接本地 MySQL 实现数据的增删改查

    在微信小程序中,通过Node.js连接本地 MySQL 实现数据的增删改查的过程,可以分为以下几个步骤: 1. 准备工作 必要工具: 2. 搭建 Node.js 后端服务 安装依赖 在 Node.js 项目中,使用 npm init 初始化项目,并安装以下依赖: express: 用于搭建 Web 服务。 mysql: 用于连接和操作 MySQL 数据库。 …

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

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

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

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

    2024年11月25日
    00
  • 实现微信支付提现api接口教程

    微信支付的提现功能,通常是通过调用 企业付款到零钱 API 或 企业付款到银行卡 API 来实现的。以下是如何使用微信支付提现 API 的详细教程,包括其前置条件、接口调用以及注意事项。 1. 准备工作 1.1. 开通微信支付商户号 1.2. 配置证书 将这些文件保存在你的服务器上,用于发起 HTTPS 请求。 1.3. 获取 API 密钥 2. 企业付款到…

    2024年11月24日
    00

发表回复

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

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信