使用dockerfile自定義映象.md
阿新 • • 發佈:2018-12-10
Dockerfile該怎麼寫?
目前我會的docker執行方式就是簡單粗暴的docker pull下來別人的基礎環境,
然後把自己的專案丟進拉下來的基礎環境執行,
最終儲存退出,打包成自己的映象push到自己的docker hub中以供專案複用
有朋友問我是不是懂docker,我覺得略懂,然後問我如何寫Dockerfile,我也是一臉懵x,本著好學的心態去了解了一下Dockerfile的生成
docker?
專案執行依賴環境是必需的,我的python專案 nginx+redis+mysql+python+flask
, 讓別人在他的電腦上如何快速執行我的專案?各種找資源安裝依賴?No, docker就是解決這個問題的,以容器+映象
Dockerfile?
就是將你的專案依賴打包成docker映象的一個檔案,開頭的D必須大寫
# 重度mac使用者,對windows小夥伴說聲抱歉
# 開啟終端,建立一個新目錄存放Dockerfile
cd ~
mkdir docker-demo
cd docker-demo
touch Dockerfile
這樣就準備好了,進入你的專案把依賴檔案拷貝一份,requirements.txt或者package.js等等
cp requirements.txt ~/ cd ~/docker-demo vim Dockerfile
開始寫了
FROM tiangolo/uwsgi-nginx-flask:python3.6
COPY ./requirements.txt /tmp/
RUN pip install -r /tmp/requirements.txt
這就寫完了
然後執行
# 最後的.不要省略
# nginx是映象名,v1是tag,都是自己起的
# 如果後面要上傳到自己的映象倉庫dockerhub, 這塊的映象名最好起成 dockerhub的賬號名/映象
# 如 dockershi/django-demo
docker build -t nginx:v1 .
這樣就構建好啦,docker images可以檢視到生成的映象
來說下需要注意的地方,
FROM
後邊跟的是基礎映象。我找了一個相對比較全的基礎映象,基礎映象可以去docker hub去找
COPY
就是拷貝 當前目錄下的依賴檔案. 這裡要說的是儘量把依賴檔案單獨拎出來,因為這個./ 的意思是上下文,是相對路徑,所以你用…/req. /root/app/req都沒用
RUN
就是按層級執行,層級儘量不要太多
比如
RUN apt-get install redis
RUN apt-get install mongo
RUN apt-get install gcc
就直接寫成
RUN buildDeps = apt-get install redis \
&& apt-get install mongo \
&& apt-get install gcc \
$buildDeps
$buildDeps結束 \換行承接上文