老司機帶你開飛機 一: mssql on linux 安裝指導


通常在本機開發環境中需要搭建所有的服務,還要修改本地的hosts,實在是不勝其煩。如今有了docker,完全不用污染本地環境,且看老司機帶你搭建一個asp.net core的開發環境集群。願你走出虛擬機,歸來仍是干凈的開發機。

教程比較長,所以分成多篇連載。

First things first:需要安裝一個數據庫,如今有了mssql on linux,真是太棒了,原來mssqlserver中的測試數據都可以無縫遷移過來。

docker的安裝細節大家自己找找看

  1. 進入bash,執行以下命令
cd ~
mkdir mssql
cd mssql
vim Dockerfile
  1. 輸入以下Dockerfile腳本
# mssql-server-linux
# Maintainers: Microsoft Corporation (LuisBosquez and twright-msft on GitHub)
# GitRepo: https://github.com/Microsoft/mssql-docker

# Base OS layer: Latest Ubuntu LTS.
FROM microsoft/mssql-server-linux

# 設置證書
ENV ACCEPT_EULA Y

# 設置sa帳戶的密碼
ENV SA_PASSWORD Sql123123.

# Default SQL Server TCP/Port.
EXPOSE 1433

# Copy all SQL Server runtime files from build drop into image.
#COPY ./data /data

# 掛載一個數據卷,用於放置腳本和備份數據
VOLUME /data

# Run SQL Server process.
CMD /opt/mssql/bin/sqlservr.sh

保存並退出:wq

  1. 生成鏡像docker build -t mssql .,最后一個點別忘了。

  2. 創建一個目錄以供mssql掛載: mkdir mssqldata

  3. 啟動容器docker run -d -v /(!絕對路徑!)/mssqldata:/data mssql,以后就使用該容器提供的數據庫服務,不要輕易刪除,可以stop/restart。

  4. 容器正常運行以后,可以直接進入SqlCmd操作數據庫:docker exec -it <container_id|container_name> /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <your_password> (ps:SqlCmd是一種命令行管理工具,還可以通過VS Code使用圖形化管理)

很多情況下,要通過Sql腳本恢復數據庫,這時候就不能直接進入SqlCmd了。

我們先把sql腳本復制數據卷對應的本機目錄下,我上面指定的是/(!絕對路徑!)/mssqldata

首先,復制一個sql腳本到數據卷中/(!絕對路徑!)/mssqldata/testdb.sql,我的testdbd.sql中包含了data & scheme。(mssqlserver生成sql腳本的過程大家應該是知道的。)

注意!
如果腳本中有創建mdf文件的語句:

 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'TestDb', FILENAME = N'C:\xxx\TestDb.mdf' , SIZE = 4096KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'TestDb_log', FILENAME = N'C:\xxx\TestDb_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

那么應該把地址改成數據卷的地址,本例中改為FILENAME = N'/data/TestDb.mdf‘,還有一個ldf文件可別忘了。

這樣做是為了保證鏡像干凈。

  1. 進入數據庫容器:docker exec -it <container_id|container_name> /bin/bash (PS:命令docker ps -a可以查看到該容器的id和name,或者在啟動容器的時候指定name)

  2. /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <your_password> -i /data/testdb.sql,此處的-i參數就表示執行后面的sql腳本。前面已經把sql腳本放在了數據卷中,所以在容器的/data中就能拿到了。

完成了mssql on linux的安裝和數據恢復,后面就要使用此docker容器作為數據庫服務了。如果你對docker的基本命令還不熟悉的話,建議去官網看看文檔,多練幾遍就可以了,沒什么難度。

感慨一句,mssql on linux的docker鏡像文檔里明確指出里需要至少3.25GB的內存,但是實際上沒那么誇張,跑了一個數據庫實例也才使用600MB,相對於mssqlserver已經好太多了。

接下來,會講解如何使用docker-compose搭建集群。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM