Dockerfile
FROM python:3.7-slim #基礎(chǔ)鏡像的tag
ENV PYTHONUNBUFFERED 1 #設(shè)置環(huán)境變量
MAINTAINER cszb <wdjlwz@163.com> #鏡像制作者的信息
# 設(shè)置編碼
ENV LANG en_US.UTF-8
# 同步時間
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 3. 安裝依賴包
RUN pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/
RUN pip3 install --upgrade pip
ADD requirements.txt . #將文件從本地路徑 <src,復(fù)制添加到容器內(nèi)部路徑 <dest>.
RUN pip3 install -r requirements.txt
# 4.復(fù)制業(yè)務(wù)程序
RUN cd /
ADD AutoLink .
WORKDIR .
## 5. 啟動
CMD ["python","AutoLink.py","runserver","-h", "0.0.0.0","-p","8000"]
EXPOSE 5000 8000 #暴露服務(wù)端口
ADD
ADD 將文件從路徑 <src復(fù)制添加到容器內(nèi)部路徑 <dest>,復(fù)制文件夾的會默認(rèn)進(jìn)去復(fù)制的當(dāng)前目錄。如果 <dest> 不存在, 文件會被創(chuàng)建在默認(rèn)不存在路徑下
CMD
CMD 指令用3種用法:
CMD ["executable","param1","param2"] 像exec
CMD ["param1","param2"]
CMD command param1 param2 像shell
第一種用法:運(yùn)行一個可執(zhí)行的文件并提供參數(shù)。
第二種用法:為ENTRYPOINT指定參數(shù)。
第三種用法(shell form):是以”/bin/sh -c”的方法執(zhí)行的命令。
如果用戶可能在執(zhí)行 docker run 的時候指定參數(shù),那么會把CMD里的參數(shù)覆蓋。
有點(diǎn)類似像開機(jī)啟動項(xiàng)
ENTRYPOINT
An ENTRYPOINT allows you to configure a container that will run as an executable.它可以讓你的容器功能表現(xiàn)得像一個可執(zhí)行程序一樣。
ENTRYPOINT有兩種寫法:
寫法一:ENTRYPOINT ["executable", "param1", "param2"] (the preferred exec form)
寫法二:ENTRYPOINT command param1 param2 (shell form)
你也可以在docker run 命令時使用–entrypoint指定(但是只能用寫法一)
創(chuàng)建命令
docker build -f Dockerfile -t datagear:1.9.0 .
docker build -f[指定Dockerfile文件] -t [構(gòu)建鏡像后的tag] .[構(gòu)建的文件目錄]
PS.構(gòu)建建議新建目錄,只放構(gòu)建鏡像需要的文件,build開始"Sending build context to Docker daemon 194.5MB" 將目錄下文件全部sending,若目錄下很多文件,可能構(gòu)建很慢或者失敗。