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

相关推荐

  • 在微信公众号开发中获取 access_token 调用微信服务器端接口

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

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

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

    2024年11月25日
    00
  • 在 Apache Kafka 中消息的消费和传递通过消费者与 Kafka 的分布式系统协作完成

    在 Apache Kafka 中,消息的消费和传递是通过消费者(Consumer)与 Kafka 的分布式系统协作完成的。以下是消息传递的主要流程: 1. Producer 生产消息到 Kafka 2. Consumer 消费消息 Kafka 中消费者的消息消费流程如下: 2.1 订阅主题 消费者通过 Kafka 客户端订阅一个或多个主题。它可以: 2.2 …

    2024年12月9日
    00
  • 使用 VS Code 管理 Git 仓库详细使用指南

    使用 VS Code 管理 Git 仓库,可以通过其直观的图形界面和终端功能完成常见的版本控制操作,如克隆、提交、分支管理等。以下是一个详细的使用指南,帮助你高效地使用 VS Code 和 Git。 1. 环境准备安装必要工具安装 Git:从 Git 官网 下载并安装。安装 VS Code:从 VS Code 官网 下载并安装。安装 Git 插件(可选):在…

    2024年11月30日
    00
  • 在Spring 项目中使用 Spring AI 模块的教程

    Spring AI 是 Spring 项目中一个面向 AI 应用的模块,旨在通过集成开源框架、提供标准化的工具和便捷的开发体验,加速 AI 驱动应用程序的构建和部署。以下是 Spring AI 的一些常见功能和使用方法的详解。 1. 项目背景 Spring AI 主要用于: 2. 环境配置 前置条件 添加依赖 在 pom.xml 中添加以下依赖: 或者在 b…

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

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

    2024年11月24日
    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
  • C语言中的操作符(Operators)对数据进行运算的符号

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

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

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

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

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

    2024年11月24日
    00
  • 实现 Qwen2.5-7B-Instruct 模型在本地部署并结合 vLLM 推理加速和 Gradio 搭建前端界面

    要实现 Qwen2.5-7B-Instruct 模型在本地部署并结合 vLLM 推理加速和 Gradio 搭建前端界面,以下是详细步骤: 1. 环境准备 2. 模型加载与配置 通过 Hugging Face Transformers 加载 Qwen2.5-7B-Instruct 模型: 3. 推理加速 4. 前端界面部署 通过 Gradio 创建简洁的用户界…

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

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

    2024年12月9日
    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
  • Python与Jupyter Notebook中的数据可视化实现

    数据可视化是分析和展示数据的重要手段,而 Python 与 Jupyter Notebook 是构建交互式数据可视化的重要工具组合。以下是如何在 Python 和 Jupyter Notebook 中实现数据可视化的详细介绍。 1. 常用数据可视化库Python 中有多个强大的可视化库,以下是几个常用的:1.1 Matplotlib特点:功能强大、灵活,但语…

    2024年11月26日
    00
  • 在使用 HBase 时,遇到 Unable to find region for 错误问题

    在使用 HBase 时,遇到 Unable to find region for 错误通常是由于以下几个原因引起的:HBase RegionServer 未启动或无法连接表的 Region 分布信息不一致Zookeeper 配置问题客户端连接配置问题HBase 版本不兼容下面是一些常见的原因和解决办法:1. 确保 HBase 服务正常运行首先检查你的 HBa…

    2024年11月29日
    00

发表回复

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

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信