1. 程式人生 > >Gitlab CI 自動部署 asp.net core web api 到Docker容器

Gitlab CI 自動部署 asp.net core web api 到Docker容器

然後可以到官網下載net core 1.1 on MacOS,完成之後可以在命令列輸入 dotnet --version 來檢測當前的版本。

初始化專案並執行

通過3個命領我們可以完成初始化專案並執行的全過程: dotnet new|restore|run。 dotnet 框架預設提供一些初始化的專案模板,可以輸入dotnet new -all來檢視。

我們可以用 dotnet new webapi 來初始化一個與資料夾名稱相同的 webapi專案,也可以在後面加 -n自定義一個專案名稱。然後接著在命令列中進入專案的目錄輸入 dotnet restore,最後用 dotnet run來執行這個web api 專案。

接著就可以在本地瀏覽這個api

到這裡我們的dotnet core web api已經執行在本地了,接下來我們就要讓它執行在Docker中。

在Docker中執行dotnet core web api

 上面我們已經講過DockerFile以及一個net core web api 中應該如何配置它。我們會把它放到專案的根目錄裡。 可以用Visual studio for mac 開啟整個web api專案。

 

接下來我們要做的就是把我們這個程式碼構建成一個映象。

我們在terminal中進行專案的根目錄,輸入 docker build -t myA=apiimage . 

完成之後輸入 docker images 可以檢視到我們剛剛建立的映象 

接下來我們就可以用 docker run 用剛剛這個映象啟動一個容器執行在host的 8080埠。

 這個時候我們再訪問之前的api就需要通過8080埠,而此時的 api 已經是在容器中執行的。

 5分鐘快速用Docker部署你自己的GitLab

在掌握了Docker的基本用法之後,我們需要了解如何把GitLab通過Docker跑起來。

Gitlab的安裝與配置  

sudo docker run --detach \
    --hostname 127.0.0.1 \
    --publish 443:443 --publish 80:80 --publish 2222:22 \
    --name gitlab \
    
--restart always \ --volume /srv/gitlab/config:/etc/gitlab:Z \ --volume /srv/gitlab/logs:/var/log/gitlab:Z \ --volume /srv/gitlab/data:/var/opt/gitlab:Z \ gitlab/gitlab-ce:latest

我們用到的引數列表: docker run 的引數配置可以檢視官方文件。 

在執行安裝指令碼之前,我們所使用的volume路徑需要授權給docker。

可能會遇到的問題

我在安裝及配置的時候遇到了兩個問題,可能有人也會遇到。

  1. GitLab 一直在重啟(跑不起來)
  2. SSH連線不上

SSH連線的問題我們下面有一小節會講,這裡我簡單說一下第一個問題。當我執行指令碼之後通過 docker ps 檢視當前正在執行的容裡面並沒有看到 gitlab這個容器,通過 ps -a顯示所有容器時發現它的狀態一直是 starting 或者 restarting。 這個時候我們可以使用 docker logs 來檢視當前容器的執行日誌。

Preparing services...
Starting services...
/opt/gitlab/embedded/bin/runsvdir-start: line 24: ulimit: pending signals: cannot modify limit: Operation not permitted
/opt/gitlab/embedded/bin/runsvdir-start: line 37: /proc/sys/fs/file-max: Read-only file system
Configuring GitLab package...
Configuring GitLab...

================================================================================
Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'
================================================================================

通過 docker logs 可以方便大家來論斷錯誤,一切正常還好,如果一旦出現問題,新手是很懵圈的。這個時候可能通過google 查詢錯誤日誌,多數情況下都能找到正確答案,我遇到的是個許可權不足的問題, 在這個連結裡面有完整的討論,解決辦法就是執行下面這句命令之後就可以正常啟行了。

sudo chmod 2770 /srv/gitlab/data/git-data/repositories

SSH 連線GitLab 

如果對於SSH不是很瞭解的同學可以看看阮一峰寫的兩篇關於SSH原理與運用的文章,非常的不錯。 我們直接開始嘗試用SSH連線我們本地的gitlab。