通常在本機開發環境中需要搭建所有的服務,還要修改本地的
hosts,實在是不勝其煩。如今有了docker,完全不用污染本地環境,且看老司機帶你搭建一個asp.net core的開發環境集群。願你走出虛擬機,歸來仍是干凈的開發機。
教程比較長,所以分成多篇連載。
First things first:需要安裝一個數據庫,如今有了mssql on linux,真是太棒了,原來mssqlserver中的測試數據都可以無縫遷移過來。
docker的安裝細節大家自己找找看。
- 進入
bash,執行以下命令
cd ~
mkdir mssql
cd mssql
vim Dockerfile
- 輸入以下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
-
生成鏡像
docker build -t mssql .,最后一個點別忘了。 -
創建一個目錄以供
mssql掛載:mkdir mssqldata -
啟動容器
docker run -d -v /(!絕對路徑!)/mssqldata:/data mssql,以后就使用該容器提供的數據庫服務,不要輕易刪除,可以stop/restart。 -
容器正常運行以后,可以直接進入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文件可別忘了。
這樣做是為了保證鏡像干凈。
-
進入數據庫容器:
docker exec -it <container_id|container_name> /bin/bash(PS:命令docker ps -a可以查看到該容器的id和name,或者在啟動容器的時候指定name) -
/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搭建集群。
