【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

後记


<<:  radio vs checkbox

>>:  [Day12] Android - Kotlin笔记:JetPack - Fragments在Navigation中的参数传递(Safe Args)

谁喜欢这则贴文,初探 case...when 用法,Ruby 30 天刷题修行篇第十六话

嗨,我是 A Fei,让我们看看今天的题目: (题目来源:Codewars) You probabl...

04 你的专研不是你的专研

升上高中也有专题研究的学分。为了找到适合的题目,我和同个专研的同学一起到师大资工(和科学班合作的校系...

[Day15] Webpack 入门 - 前端三本柱

Webpack 一开始只认识 JavaScript,当引入其他语言(如:css)撰写的档案时就会出现...

Day22,Cert-Manager

正文 既上次 Day 16 使用自签凭证的过程,其实原本是打算使用cert-manager来签署凭证...

为了转生而点技能-Java难题纪录 (作业:染病接触之人员追踪链

前言: 本篇是参加学校开设的java资讯班的作业,由於对於笔者来说花蛮多时间的,所以想记录下来解题的...