­

樹莓派中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/ 即可訪問