iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
DevOps

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

【Day 6】make x Makefile x 任賢齊的救星

tags: 鐵人賽 Makefile make

概述

碎念時間

  • 昨天我們使用一條長長的指令,把網頁跑在本機的容器裡
  • 這個指令好長,我今天已經記不得了
  • 所以今天來説說 makeMakefile
  • 讓部署環境,變成穩定可控,我們需要的是讓架構變成原始碼,也就是 Infrastructure as Code (IaS)
  • 把指令寫在 Makefile 中的好處,是可以讓別人看專案時一目了然、讓自己好呼叫操作、讓程式簡短地呼叫

任賢齊他說他是一隻魚

Git 本日概覽

git add

  • 當撰寫完程式碼,準備提交的時候⋯⋯
  • 使用 git add <檔名> 將修改過的內容,加進 Stage
  • Commit message 想打什麼都可以,不過⋯如果要長期經營好一個原始碼專案的話

    把做好的餐點放到廚房的出餐區 ... 但是還沒幫這些菜標記料理理念般

git commit

  • Stage 中的原始碼,做提交。
  • 使用 git commit -m "提交訊息"

    在版本控制的流程中,以樹狀結構來控制版本。
    對於每次的修改內容,都加註訊息,以便往後回顧或追蹤。
    飽春:可以寫個 “「順,不會抖」”

git push

  • 將本地端的提交記錄,送到指定的原始碼管理伺服器的指定分支。
  • 使用 git push <伺服器位置> <分支>

    把修改記錄同步到伺服器上。
    為了不同種目的,伺服器可能有好幾台。
    把提交過的修改內容,送進遠端的原始碼倉庫。 滑!進!去!

git remote

  • 不知道遠端是哪一端?
  • 使用 git remote -v 查看

    冤有頭,債有主。千萬不要無腦 push,上 code 前,要先看清楚送到哪裡。
    與你相遇,好幸運~~上扣如同 巧遇

Makefile

CURR_DIR		:=	$(shell pwd)

.PHONY: all pull pull-img build-dev-img run stop clean

all:

pull:
	git pull

pull-img:
	docker pull httpd

build-dev-img:
	docker build -t daradish-builder . --no-cache

run:
	docker run -d --rm --name daradish-server -p 8080:80 -v $(CURR_DIR)/daradish:/usr/local/apache2/htdocs/ httpd:latest

stop:
	docker stop daradish-server

clean:
	docker rm daradish-server
  • 上面的 Variable 部分的寫法
    • 建議參考:GUN Make 文件 -- How to Use Variables
    • all:, pull:, pull-img:, ... 等,都是 Target
    • .PHONY 是用來避免執行 make 的目錄下,有和 Target 同名的檔案或目錄,所以寫在 .PHONY 後面,來告訴 make 有哪些東西它是 Target 的假名
    • 針對 Makefile 的語法來說,空格縮排都有嚴謹的規範,請小心使用

Docker

客製化容器

  • 為什麼我們要客製化容器呢? 要把什麼東西包起來呢?
    • 目前這個專案的使用場景有兩個 ⋯⋯(要區分更多種用法當然是可以的)
      1. 開發人員在 開發中使用,方便開發與進行測試
      2. 將穩定的版本 上線到正式環境使用,只擺放上線所需內容

在上述環境一、開發使用容器:希望是善用的作業系統、慣用的工具

  • 開發者的容器
    • 平常在公司用公司電腦上班使用
    • 回到家裡後,突然靈光乍現想改 code
    • 肚子痛滑進摩鐵上廁所的時候,突然老闆急 call 表示有 Bug 需要 Hotfix,於是需要臨時使用摩鐵公用電腦改 code ⋯⋯

    利用容器的可移轉性

    • 加入工程師常用的開發工具、還有 build 專案所需的內容。
    • 串接原始碼倉庫、並且有和倉庫溝通能力(不見得是最好)⋯⋯

在上述環境二、上線環境容器:希望是單純的環境

  • 上線的容器
    • 需包含穩定的套件版本
    • 避免外曝不必要的資訊,以降低風險
    • 輕量化、易擴展⋯⋯等
    • 其他訴求

小結

  • 有了以上 IaS 的觀念,明天再來撰寫 Dockerfile

後記


上一篇
【Day 5】Git Submodule x Run Docker x 啟用第一個蘿蔔服務
下一篇
【Day 7】Dockerfile x 連千毅:從一排漢堡認識容器映像檔
系列文
運用皮毛技術與 AWS 平台、打造雲端蘿蔔服務三十天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言