是該努力點了!
505 字
3 分鐘
Docker 建立 MSSQL 用於測試
2024-06-22

Docker 建立 MSSQL 用於測試#

在一些開發環境中,或許會使用到 SQL Server 的相關服務開發; 而自己對 SQL Server 沒有到非常熟悉,因此想說透過 Docker 建立一個 SQL Server 來進行測試/開發。

相關連結:#

拉取 Docker Registry 上的 SQL Server Image#

針對其他版本的話,請參考 快速入門:使用 Docker 執行 SQL Server Linux 容器映像 中的說明

此範例使用 SQL Server 2022 (當前官方網站上的最新版本)#

docker pull mcr.microsoft.com/mssql/server:2022-latest

啟動服務#

export MSSQL_SA_PASSWORD="f6%w=CcA%b" # 這邊可以自行設定密碼,但須遵守 SQL Server 密碼的規則。

# 啟動 SQL Server 服務
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=$MSSQL_SA_PASSWORD" \
   -p 1433:1433 --name sql1 --hostname sql1 \
   --platform linux/amd64 \
   -d \
   mcr.microsoft.com/mssql/server:2022-latest

如果建立失敗,請排查:

  • 1433 port 是否被佔用
  • 是否有其他服務使用相同的 container name
  • docker logs -f sql1 是否有無錯誤訊息 -> 自己發生過密碼不符合規定的問題
  • …暫未想到其餘問題。
參數描述
ACCEPT_EULA必須設定為 Y,代表同意使用 SQL Server 的 EULA
MSSQL_SA_PASSWORDSQL Server 的 sa 密碼
-p 1433:1433將 container 的 1433 port 對應到 host 的 1433 port
--name sql1container 的名稱
--hostname sql1container 的 hostname
--platform linux/amd64指定 container 的平台 Mac M Cipher
-d在背景執行
mcr.microsoft.com/mssql/server:2022-latestSQL Server 的 image 名稱

Docker 相關操作:#

# 1) 連入容器使用容器
docker exec -it sql1 bash
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "{{ 這邊是 MSSQL_SA_PASSWORD 的密碼 }}"

2) 直接透過連入 sqlcmd 終端進行測試
docker exec -ti sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $MSSQL_SA_PASSWORD

停用 SA 帳戶#

… 略(請參考) …

使用 sqlcmd 進行基本操作#

在 mssql sqlcmd 中,運行語句時尚未被執行,直到輸入 GO 為止。

建立新的資料庫#

CREATE DATABASE TestDB;

SELECT Name from sys.databases;

GO 

插入資料#

USE TestDB;

CREATE TABLE Inventory(id INT, name NVARCHAR(50), quantity INT);

INSERT INTO Inventory VALUES (1, 'banana', 150);
INSERT INTO Inventory VALUES (1, 'orange', 154);

GO

撈取資料#

SELECT * FROM Inventory WHERE quantity > 152;

離開終端#

QUIT