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

初探 Mysql Docker

前言

我在專案開發階段常使用 MySQL Docker,主要是好處,快速啟動、零安裝成本、版本切換,不污染本機系統(不喜歡本機裝一堆有的沒的,特別是有的只會用那麼一次)。而且如果在需要,任何時間、任何機器,都能還原相同 DB 環境。

註: 在測試也非常好用:

1.Unit / Integration Test 啟動臨時 MySQL

2.測試結束,可以將容器刪除

3.不影響正式資料

必要:

安裝 Docker Desktop

參看: https://docs.docker.com/desktop/setup/install/windows-install/

專案結構

|- docker/

| |- mysql/

| |─ docker-compose.yml

| |- init/

| |- schema.sql

實作

新增docker-compose.ymlMySQL

services: mysql: image: mysql:8.4.7 container_name: dev-mysql restart: always ports: - "3306:3306" environment: # 建立 root 預設使用的密碼 MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: testdb # 建立新使用者並設定該使用者的密碼 MYSQL_USER: mysql MYSQL_PASSWORD: 123456 volumes: # 我本機上建立的資料目錄 - /Users/danny/mysql_data:/var/lib/mysql - ./init:/docker-entrypoint-initdb.d command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

新增schema.sql

DROP TABLE IF EXISTS users; CREATE TABLE users ( id bigint NOT NULL AUTO_INCREMENT, email varchar(255) NOT NULL, first_name varchar(255) NOT NULL, last_name varchar(255) DEFAULT NULL, password varchar(255) NOT NULL, username varchar(255) NOT NULL, PRIMARY KEY (id), CONSTRAINT username_unique UNIQUE (username), CONSTRAINT email_unique UNIQUE (email) );

說明:

初始化新實例:(選項)

當容器首次啟動時,如需要建立一個具有指定名稱的新資料庫,並進行初始化。它將執行位於指定目錄下、副檔名為 .sql 的檔案/docker-entrypoint-initdb.d。文件將按字母順序執行。

資料儲存:(選項)

在主機系統上建立資料目錄,並將其掛載到容器內部可存取的目錄。這樣,資料庫檔案就會位於主機系統上建立資料

啟動 / 停止

# 啟動,如果之前會 pull mysql image過,會需要pull image

docker compose up -d

# 查看狀態,已成功啟動。

docker compose ps

檢視相關狀態。

查看 Docker Desktop,可以看到 Containers 已有剛建立的 dev-mysql

使用mysql client 工具連線,可以看到剛初始建立的table users

文章到此結束。謝謝!

:-( 怎沒半個粉

http://www.zskr.cn/news/117474.html

相关文章:

  • 2025年12月灰铁,灰铁棒料,灰铁圆棒型材公司推荐:行业测评与采购选择指南 - 品牌鉴赏师
  • 什么是云桌面?一般都用哪些云桌面?
  • 【昇腾CANN训练营·核心篇】拒绝“写死”:Ascend C 算子动态 Tiling 的设计哲学
  • 学习日记day50
  • AMP页面还要做吗?2025替代方案及优化指南
  • Java_反射暴破创建对象与访问类中的成员
  • 2025年12月希腊移民,香港移民,澳洲移民中介测评指南,资质合规与服务透明优选 - 品牌鉴赏师
  • PaperReding:《LLaMA: Open and Efficient Foundation Language Models》
  • 2025年12月浦东新区口腔诊所推荐:全科室覆盖机构口碑之选盘点 - 品牌鉴赏师
  • 2025年12月球墨铸铁,QT400-18球墨铸铁,球墨铸铁棒料公司推荐:行业测评与选择指南 - 品牌鉴赏师
  • 《Java Web开发入门很简单》——学习笔记,新手入门,收藏这篇就够了
  • javascript: Converts HTML documents to DOCX in the browser
  • 基于UWB定位的安全帽人员定位系统:技术架构和核心功能详解
  • Gurobi 重磅回归GAMS与GAMSPy
  • 再次紧急修复,Flutter 针对 WebView 无法点击问题增加新的快速修复
  • 学生管理系统源码 Python+Django+Vue 前后分离 设计文档
  • 【即插即用模块】SCI1区 IF 15.5!| 空间注意力融合模块聚合结构细节,跨注意力融合模块捕捉全局语义,兼顾细粒度与上下文!SCI保二区争一区!彻底疯狂!!!
  • 16、Linux 中 IPX 与 NCP 文件系统的使用与配置
  • iOS 18.1 - iOS 26.x 抢先开启国行 Ai、分屏,Misaka26 工具来袭!!!!! - 指南
  • 【即插即用模块】SCI1区 | CNN为什么不能捕获长距离特征?双坐标注意力牛在哪:平均+最大池化并行,涨点必备,SCI保二区争一区!彻底疯狂!!!
  • langfuse 使用
  • 基于大数据的交通信号智能控制系统的设计与实现任务书
  • 17、Taylor UUCP 配置与使用指南
  • 18、Linux 电子邮件管理全解析
  • 收藏!程序员转型大模型:不是从零开始,而是降维升级
  • Git入门学习
  • NVIDIA正式推出Nemotron 3:用开放模型重塑AI多智能体时代
  • 为什么越来越多跨境卖家从平台转向独立站?
  • SC4D50120H-JSM 碳化硅肖特基二极管
  • 【强烈推荐】LangGraph核心概念解析:State管理+实战案例,一篇搞定大模型开发