在 Docker 中安装 MySQL 和 Nginx 非常简单,只需使用 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
总结
服务 | 命令 | 访问方式 |
---|---|---|
MySQL | docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0 | mysql -h 服务器IP -uroot -p |
Nginx | docker run -d --name nginx -p 80:80 -v /data/nginx/html:/usr/share/nginx/html nginx | http://服务器IP |
推荐使用 Docker Compose 管理多个容器,更方便维护! 🚀