当前位置: 首页 > news >正文

使用Docker安装MySQL和Nginx

在 Docker 中安装 MySQLNginx 非常简单,只需使用 docker run 命令即可快速部署。以下是详细步骤:


1. 安装 MySQL

(1)拉取 MySQL 镜像

docker pull mysql:8.0  # 推荐使用 8.0 或 5.7 版本

(2)运行 MySQL 容器

docker run -d \--name mysql \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD=your_password \  # 设置 root 密码-e MYSQL_DATABASE=testdb \             # 可选:初始化数据库-e MYSQL_USER=testuser \               # 可选:创建用户-e MYSQL_PASSWORD=testpass \           # 可选:用户密码-v /data/mysql:/var/lib/mysql \        # 挂载数据卷(持久化存储)mysql:8.0 \--character-set-server=utf8mb4 \       # 设置字符集--collation-server=utf8mb4_unicode_ci  # 设置排序规则
参数说明:
  • -d:后台运行
  • --name mysql:容器名称
  • -p 3306:3306:映射主机 3306 端口到容器的 3306
  • -e MYSQL_ROOT_PASSWORD:必须设置 root 密码
  • -v /data/mysql:/var/lib/mysql:数据持久化(防止容器删除后数据丢失)

(3)测试 MySQL 连接

docker exec -it mysql mysql -uroot -p

输入密码后,进入 MySQL Shell,说明安装成功。


2. 安装 Nginx

(1)拉取 Nginx 镜像

docker pull nginx:latest

(2)运行 Nginx 容器

docker run -d \--name nginx \-p 80:80 \-p 443:443 \-v /data/nginx/html:/usr/share/nginx/html \  # 挂载静态网站目录-v /data/nginx/conf:/etc/nginx/conf.d \     # 挂载自定义配置nginx:latest
参数说明:
  • -p 80:80:映射 HTTP 端口
  • -p 443:443:映射 HTTPS 端口(如需 SSL)
  • -v /data/nginx/html:/usr/share/nginx/html:挂载网站文件
  • -v /data/nginx/conf:/etc/nginx/conf.d:挂载自定义配置(如 default.conf

(3)测试 Nginx

访问 http://你的服务器IP,如果看到 Welcome to nginx!,说明安装成功。


3. 管理容器

查看运行中的容器

docker ps

停止/启动/重启容器

docker stop nginx    # 停止
docker start nginx   # 启动
docker restart nginx # 重启

删除容器(谨慎操作)

docker rm -f nginx mysql  # 强制删除

4. 进阶:使用 Docker Compose 管理(推荐)

如果同时管理 MySQL 和 Nginx,推荐使用 docker-compose.yml 编排:

version: '3'
services:mysql:image: mysql:8.0container_name: mysqlports:- "3306:3306"environment:MYSQL_ROOT_PASSWORD: your_passwordvolumes:- /data/mysql:/var/lib/mysqlrestart: alwaysnginx:image: nginx:latestcontainer_name: nginxports:- "80:80"- "443:443"volumes:- /data/nginx/html:/usr/share/nginx/html- /data/nginx/conf:/etc/nginx/conf.drestart: always

启动

docker-compose up -d

停止

docker-compose down

5. 常见问题

(1)MySQL 无法远程连接?

检查 MySQL 是否允许远程访问:

docker exec -it mysql mysql -uroot -p

执行:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

(2)Nginx 配置修改后如何生效?

docker exec -it nginx nginx -s reload

总结

服务命令访问方式
MySQLdocker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0mysql -h 服务器IP -uroot -p
Nginxdocker run -d --name nginx -p 80:80 -v /data/nginx/html:/usr/share/nginx/html nginxhttp://服务器IP

推荐使用 Docker Compose 管理多个容器,更方便维护! 🚀

http://www.lqws.cn/news/553717.html

相关文章:

  • 深入详解:随机森林算法——概念、原理、实现与应用场景
  • 8. 【Vue实战--孢子记账--Web 版开发】-- 账户账本管理
  • ESP-IDF中通过红外遥控RMT点亮WS2812(3)
  • web网页开发,在线%旅游景点管理%系统demo,基于Idea,vscode,html,css,vue,java,maven,springboot,mysql
  • 【Docker基础】Docker容器管理:docker top及其参数详解
  • 【力扣 中等 C】79. 单词搜索
  • HarmonyOS NEXT仓颉开发语言实战案例:图片预览器
  • 东南亚 TikTok 直播网络专线,专线助力告别直播画面卡顿时代
  • 某省职业院校技能大赛 高职组“信息安全管理与评估”赛项第二部分:应急响应
  • Word之空白页删除2
  • Note2.3 机器学习:Adaptive Learning Rate
  • 顺序表的常见算法
  • Qt 收藏夹书签管理
  • Qt的UDP接收过一段时间后就收不到数据,readyRead() 信号不触发的彻底解决方法
  • Python 数据分析:numpy,抽提,整数数组索引
  • 鸿蒙5:其他布局容器
  • 【大数据】HDFS分布式 机架感知
  • 学习笔记(C++篇)—— Day 8
  • Node.js特训专栏-实战进阶:10.MongoDB文档操作与聚合框架
  • 提示词优化神奇: PromptPilot是什么
  • NLog、log4net、Serilog 和 Microsoft.Extensions.Logging 四大 .NET 日志库的综合对比
  • 滑坡监测接收机市场分析
  • Uni-App 小程序面试题高频问答汇总
  • 电子电气架构 --- 车载芯片SOC简介
  • VR训练美国服务器:高性能解决方案与优化指南
  • 淘宝客APP的性能优化与监控体系:架构师的技术实践
  • 力扣第73题-矩阵置零
  • SQL关键字三分钟入门:RANK() —— 窗口函数
  • QT+VS2019 开发项目 扩展安装
  • C++标准的共享型智能指针std::shared_ptr使用介绍