1. 程式人生 > >樹莓派中Docker部署.Net Core 3.1 (一)

樹莓派中Docker部署.Net Core 3.1 (一)

一、背景

受疫情影響,已經在家強制事假一個月了,除了刷簡歷外就是在家學習,閒來無事,最近買了幾個樹莓派4B的板子回來,準備用樹莓派搭建個自動部署的平臺和微服務示例,長話短說,節約時間,直接進入正題吧

二、樹莓派系統安裝

一開始我是在華為雲下的centos,後來發現各種問題(無法連線5Gwifi等),畢竟樹莓派是arm的cpu,很多東西不沒法下,網上找了找,發現Debian-Pi-Aarch64這款系統不錯,於是就下載了,有需要的自行下載,地址是:https://gitee.com/openfans-community/Debian-Pi-Aarch64/blob/master/README_zh.md
我選擇的是:基礎系統Plus++(無桌面加強版)

每個版本支援什麼請看上圖,系統下載好後,燒卡和寫入sd卡這一步就不說了,不清楚如何燒卡寫sd卡的請自行百度,寫完卡後記得在boot碟符裡建立一個空的ssh檔案,不帶字尾,然後找到wpa_supplicant.conf ,自行去掉註釋,然後修改成你的wifi密碼。
做完上面的步驟後,將卡插入樹莓派,通電啟動等待一分鐘左右吧,第一次使用系統會自動重啟三次,反正我沒管,就放那等了一分鐘左右的樣子,然後通過pc直接ssh連線過去了。
系統預設賬戶:pi ,預設密碼:raspberry,預設賬戶pi賬戶支援ssh登入,root賬戶密碼請登陸後使用命令 “sudo passwd root” 執行設定密碼,同時可以修改pi的預設密碼,或使用命令 “sudo -i” 來切換到root使用者。接著開啟Web視覺化管理介面、Docker服務、和CecOS CaaS 容器雲管理平臺 登入介面

Docker容器

手動開啟:systemctl start docker.service
手動停止:systemctl stop docker.service
啟用開機啟動:systemctl enable docker.service
禁用開機啟動:systemctl disable docker.service

CecOS CaaS容器雲(服務埠:8443)

手動開啟:systemctl start cecos-caas.service
手動停止:systemctl stop cecos-caas.service
啟用開機啟動:systemctl enable cecos-caas.service
禁用開機啟動:systemctl disable cecos-caas.service

WebGUI管理平臺(服務埠:9090)

手動開啟:systemctl start cockpit.socket
手動停止:systemctl stop cockpit.socket
啟用開機啟動:systemctl enable cockpit.socket
禁用開機啟動:systemctl disable cockpit.socket

Web SSH客戶端(服務埠:4200)

手動開啟:systemctl start shellinabox.service
手動停止:systemctl stop shellinabox.service
啟用開機啟動:systemctl enable shellinabox.service
禁用開機啟動:systemctl disable shellinabox.service

注意:要啟用CecOS CaaS容器雲服務,必須要先啟用和啟動docker服務!!
因為啟動了WebGUI管理平臺(服務埠:9090),所以個人認為沒必要在啟動Web SSH客戶端(服務埠:4200)了

相關賬號密碼

1.Web視覺化管理介面
登入地址 https://你樹莓派的IP地址:9090
說明:請使用系統預設賬戶pi登入

2.CecOS CaaS 容器雲管理平臺 登入介面
登入地址 https://你樹莓派的IP地址:8443
說明:預設管理賬戶 admin , 預設密碼:password 。請登入後立即修改預設密碼!!

特別注意CecOS CaaS 容器雲管理平臺的預設管理賬戶 admin , 預設密碼:password 。請登入後立即修改預設密碼!
基本上這一步系統已經配置完成。

三、部署gitlab、Jenkins、Consul

由於樹莓派是arm的cpu,所以如果你想找需要的docker映象的話可以在 https://hub.docker.com/ 中查詢,不過記得在Architectures中勾選ARM和ARM64,這樣查出來的映象檔案即為ARM的映象了,千萬別下載x86的了,不然執行起來會報如下錯誤:

[91mstandard_init_linux.go:211: exec user process caused "exec format error"

先下ARM64為的gitlab,這裡我選擇的是ulm0/gitlab(搜尋的時候記得勾選“ARM” 和“ARM64”)

點選進入詳情,在左邊有docker下載映象的命令

docker pull ulm0/gitlab

docker 映象下載好後,我是直接使用命令進行安裝的,命令如下:

::安裝gitlab
docker run -d \
--hostname  gitlab \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.31.4/'; gitlab_rails['lfs_enabled'] = true;" \ 
-p 9443:443 -p 8081:8081 -p 220:220 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
ulm0/gitlab

這裡的 192.168.31.4 IP是樹莓派宿主機的IP,就是你安裝好樹莓派系統後的ip地址,替換成你自己的IP即可,然後我將將gitlab的443、80和20埠都修改了,其中80和20埠的修改相對較麻煩,先使用命令檢視目前的docker容器id

docker ps -a

然後使用docker exec -it c47cf283915f bash進入到gitlab容器,進入容器後cd進入到/etc/gitlab,cd /etc/gitlab,然後vi gitlab.rb,然後按i,進入到編輯模式,修改如下幾處:

修改gitlab.rb

路徑: /opt/gitlab/etc/gitlab.rb,這個檔案用於gitlab如何呼叫80和8080的服務等。

## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab

external_url 'http://192.168.31.4:8081'     ##192.168.31.4  IP為樹莓派宿主IP,自行修改自己IP

##! Note: During installation/upgrades, the value of the environment variable
##! EXTERNAL_URL will be used to populate/replace this value.
##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
# external_url 'GENERATED_EXTERNAL_URL'
################################################################################
################################################################################
##                Configuration Settings for GitLab CE and EE                 ##
################################################################################
################################################################################

################################################################################
## gitlab.yml configuration
##! Docs: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/gitlab.yml.md
################################################################################
gitlab_rails['gitlab_ssh_host'] = '192.168.31.4'
# gitlab_rails['gitlab_ssh_user'] = ''
# gitlab_rails['time_zone'] = 'UTC'
### Wait for file system to be mounted
###! Docs: https://docs.gitlab.com/omnibus/settings/configuration.html#only-start-omnibus-gitlab-services-after-a-given-filesystem-is-mounted
# high_availability['mountpoint'] = ["/var/opt/gitlab/git-data", "/var/opt/gitlab/gitlab-rails/shared"]

### GitLab Shell settings for GitLab
gitlab_rails['gitlab_shell_ssh_port'] = 220
# gitlab_rails['gitlab_shell_git_timeout'] = 800

設定gitlab的傳送郵箱

### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "傳送郵件@qq.com"
gitlab_rails['smtp_password'] = "傳送郵件密碼"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "傳送郵件@qq.com"

###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
修改gitlab 下的nginx

路徑: /var/opt/gitlab/nginx/conf/gitlab-http.conf,這個檔案是gitlab內建的nginx的配置檔案,裡面可以影響到nginx真實監聽埠號。

###################################
##         configuration         ##
###################################

server {
  listen *:8081;    ##這裡預設是80

  server_name 192.168.31.4;  ##這裡用樹莓派宿主的IP
  ##    其他的配置不變
  ##    ....
  ##    ....
  ##    其他的配置不變
  if ($http_host = "") {
    set $http_host_with_default "192.168.31.4:8081";       ## IP設定為樹莓派宿主IP
  }

修改gitlab後,執行gitlab-ctl reconfigure 使其修改後的配置生效。
最後等待幾分鐘後,區域網內用另一臺電腦訪問 http://192.168.31.4:8081/ 即可訪問