iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
DevOps

運用皮毛技術與 AWS 平台、打造雲端蘿蔔服務三十天系列 第 5

【Day 5】Git Submodule x Run Docker x 啟用第一個蘿蔔服務

  • 分享至 

  • xImage
  •  
tags: 鐵人賽 DevOps Submodule DevOps

概述

碎念時間

  • 前面幾篇大多都在設定環境
    • Wiwi Kuan 都說讚的 Terminal 環境
    • 慣用順手的 文字編輯器,選用很多人使用、多數 Linux 環境有搭載的 vim
    • 吳寶春都在用的 版本控制,採 Git / GitHub 方式實現
    • 徐太宇推薦的 大平台環境,採 Docker 容器環境實現
  • 集結上述的內容,今天要來做一些事情
    • 我所規劃的三十天內容,是要做出雲端蘿蔔服務
    • 今天來點幼幼班實作

Git

git clone

  • 從 Git 倉庫,下載原始碼,俗稱把專案「抓」下來。
  • 先前我們在 【Day 3】Git x GitHub x 版本控制的基礎:吳寶春的成功秘訣
    所建立了一個 原始碼倉庫(Repository):exsky/ironman2021,來看看這個頁面,有個綠色的按鈕「Code」,看到彩色的按紐,按下去就對了!
  • 有幾個可以選的項目,HTTPS、SSH、GitHub、CLI ⋯⋯
  • 目前預設按下按鈕會出現的是 SSH,來複製格子內的內容
  • 開啟 Terminal,切換到喜歡的目錄。
git clone git@github.com:exsky/ironman2021.git
  • 抓下來之後,工作目錄當下會多出一個新的目錄,切進去看。
cd ironman2021
ls -al

git submodule

  • 身為 DevOps 為主要工作職責,著重在如何把服務建立起來。
  • 因此,那些服務怎麼去實作、排版之類的,會交給別人,像是前端工程師去做⋯⋯吧?!
  • 假設有個前端工程師寫了一個簡易的網頁,並且放到 另外一個原始碼倉庫 的話⋯⋯就可以透過 git submodule 來描述,在 ironman2021 目錄下,引入子模組。
git submodule add git@github.com:rita0124/daradish.git daradish
  • 然後,用 tree 看看整個目錄及檔案的結構
tree
zsh: command not found: tree
  • command not found? 那不就是內部或外部命令、可執行的程式或批次檔

  • 可惡,跟防火牆一樣很難入侵

  • 那因為之前沒裝過 tree,所以出現了 command not found...裝起來就好了

brew install tree
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
(略)
  • 好了

Docker

  • 昨天,我們將 Docker Image 和 Docker Runtime 比喻為「Nespresso 咖啡膠囊」、「Nespresso 咖啡機」,還沒談到如何操作。
  • 以下我們淺談一下 Docker⋯⋯

常用的 docker 指令(1) - docker images

  • 查看本機上的 容器映像檔 (images)有哪些
docker images

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

你如果看到這段話,表示,Docker 的執行環境還沒運作起來;從 Spotlight 喚醒他吧!

  • 再執行一次
docker images

REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
docker101tutorial   latest    3a7a7c117231   23 hours ago   28.3MB
alpine/git          latest    b8f176fa3f0d   3 months ago   25.1MB
  • 這些 Image 是會佔用電腦的容量的,如果沒有用來起容器的話,可以把它刪掉

常用的 docker 指令(2) - docker rmi

  • 刪掉沒用到的東西
docker rmi docker101tutorial

  • 備註:要指名欲砍掉的 image,除了寫 "REPOSITORY" 名稱外,也可以寫 "IMAGE ID"

常用的 docker 指令(3) - docker pull

  • 我們在上一段,Git 的部分,去抓了 rita0124/daradish 這個東西
  • 那個 daradish (大蘿蔔網站) 乍看就是一個靜態網頁
  • 我想要在我目前的電腦,運作這個網站
  • 但是根據以前我所使用 macOS 作為開發機的經驗來說
    • 在上面搞出一個 Apache2 (Httpd) 是一件吃力不討好的事情
    • 應該是沒有標準流程
    • 未來如果要做各種開發,設置這台電腦一定會變得跟煉蠱一樣,巫術啊
  • 我現在需要一個網頁伺服器,來看看 Docker Hub 上的 Apache
    • The Apache HTTP Server Project
    • 勾勾寫他是 Official Image
    • 超過十億次下載 (1B+)
    • 下載指令在右邊黑底白字,複製貼上,就是這麼簡單。
  • 看結果

常用的 docker 指令(4) - docker run

  • 想要知道葫蘆裡面賣什麼藥
    • 最快的方法可以看文件。
    • 次快的方法,連進去玩玩看。
    • 都沒頭緒的話,用 docker image inspect httpd:latest
  • 我們參考了文件,裡面有提到如何起啟用網頁伺服(下圖紅框處)
  • 針對 docker run 命令的詳細用法,可以參考官方文件
  • 重點就是,把 DocumentRoot Directory 掛載到容器中的 /usr/local/apache2/htdocs
docker run -d --name my-apache-app -p 8080:80 -v "$PWD"/daradish:/usr/local/apache2/htdocs/ httpd:latest

dc8155a04c737eff45ea9ff19160557f8e8709a3bb9a3e6a9362ec8c59909c22
  • -d: 當成 Deamon 跑在背景
  • -name: 幫容器貼上名字
  • -p: 串接 Host 機器 port 至 容器本身的 port
  • -v: 掛載檔案、目錄或是裝置
  • 最後接上容器映像檔檔名 (Repository Name)

小結

  • 緩慢前進的一天
  • 預計明天來講
    • 如何上 code
    • 撰寫 Dockerfile

後記

  • 今天本來下班要來好好寫文章,但我的同事表示要先吃晚餐,剩下的內容就放到明天吧。

上一篇
【Day 4】DevOps x Containerized x 王大陸都知道的容器化好處
下一篇
【Day 6】make x Makefile x 任賢齊的救星
系列文
運用皮毛技術與 AWS 平台、打造雲端蘿蔔服務三十天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言