南阳市网站建设_网站建设公司_Django_seo优化
2025/12/17 21:31:38 网站建设 项目流程

前言

我在專案開發階段常使用 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

文章到此結束。謝謝!

:-( 怎沒半個粉

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询