因為主管、同事的推坑陷害,背上莫須有的罪名,讓你的分紅考績化為烏有,那你一定要觀看這篇,畢竟防人之心不可無,多一些知識,就多一層防護
之前,介紹過一些使用docker會用到的基本指令,但每建一個相同的Container,並進Container執行指令、更新或下載一些套件,需要做大量的重複工作。工程師就是越懶越好,重複性的工作,可以依靠撰寫程式碼來達成自動化,減少重複性的工作
接下來就會來學習如何撰寫Dockerfile,將會用到的程式碼、指令和安裝套件,一併打包成一個Container,這樣也可以明確知道這個Container裡面有哪些東西,也可以將這個Dockerfile,分享出去給別人修改或是建立一模一樣的Container,可以避免開發環境所造成的糾紛
開始撰寫Dockerfile,可以使用自己熟悉的編輯器(vscode),或vim先看完整的Dockerfile
FROM amazonlinux
RUN yum -y update && \
yum -y install httpd php mysql php-mysql wget tar.x86_64
WORKDIR /var/www/html
RUN wget https://s3-us-west-2.amazonaws.com/us-west-2-aws-training/awsu-spl/spl-13/scripts/app.tgz
RUN tar xvfz app.tgz
RUN chown apache:root /var/www/html/rds.conf.php
CMD apachctl -D FOREGROUND
以下會敘述,Dockerfile用到的指令
Container都會需要image當底層,Dockerfile使用amazon所支援的linux,也可以替換其他image,例如:Centos、Ubuntu...。
FROM [image] => FROM amazonlinux
有了image之後,就會需要更新、安裝,以及執行指令,有些指令是原本的image沒有的就會需要安裝
RUN [Linux Command]
RUN yum -y update && \
yum -y install httpd php mysql php-mysql wget tar.x86_64
通常安裝和更新後,就會需要選一個工作目錄開始撰寫程式,在Dockerfile裡有一個指令是可以指定工作目錄,若沒有指定,預設為根目錄(/)。
WORKDIR [directory]
WORKDIR /var/www/html
這邊我是下載一個WEB的壓縮檔,之後再解壓縮,以及改變檔案裡的權限
RUN wget https://s3-us-west-2.amazonaws.com/us-west-2-aws-training/awsu-spl/spl-13/scripts/app.tgz
RUN tar xvfz app.tgz
RUN chown apache:root /var/www/html/rds.conf.php
當你的Container正要開始運行時,若想要預設執行一些指令,顯示一些資訊。最後一行我是啟動web server,避免執行完就結束,指令如下
CMD [Linux Commnad]
CMD apachctl -D FOREGROUND
以上是常用的Dockerfile語法,撰寫Dockerfile其實就像蓋房子一層一層的疊加上去,可以選擇你想要的原料材質,以及室內裝潢,任由自己發揮