Dockerfile
FROM python:3.7-slim #基础镜像的tag
ENV PYTHONUNBUFFERED 1 #设置环境变量
MAINTAINER cszb <wdjlwz@163.com> #镜像制作者的信息
# 设置编码
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,复制添加到容器内部路径 <dest>.
RUN pip3 install -r requirements.txt
# 4.复制业务程序
RUN cd /
ADD AutoLink .
WORKDIR .
## 5. 启动
CMD ["python","AutoLink.py","runserver","-h", "0.0.0.0","-p","8000"]
EXPOSE 5000 8000 #暴露服务端口
ADD
ADD 将文件从路径 <src复制添加到容器内部路径 <dest>,复制文件夹的会默认进去复制的当前目录。如果 <dest> 不存在, 文件会被创建在默认不存在路径下
CMD
CMD 指令用3种用法:
CMD ["executable","param1","param2"] 像exec
CMD ["param1","param2"]
CMD command param1 param2 像shell
第一种用法:运行一个可执行的文件并提供参数。
第二种用法:为ENTRYPOINT指定参数。
第三种用法(shell form):是以”/bin/sh -c”的方法执行的命令。
如果用户可能在执行 docker run 的时候指定参数,那么会把CMD里的参数覆盖。
有点类似像开机启动项
ENTRYPOINT
An ENTRYPOINT allows you to configure a container that will run as an executable.它可以让你的容器功能表现得像一个可执行程序一样。
ENTRYPOINT有两种写法:
写法一:ENTRYPOINT ["executable", "param1", "param2"] (the preferred exec form)
写法二:ENTRYPOINT command param1 param2 (shell form)
你也可以在docker run 命令时使用–entrypoint指定(但是只能用写法一)
创建命令
docker build -f Dockerfile -t datagear:1.9.0 .
docker build -f[指定Dockerfile文件] -t [构建镜像后的tag] .[构建的文件目录]
PS.构建建议新建目录,只放构建镜像需要的文件,build开始"Sending build context to Docker daemon 194.5MB" 将目录下文件全部sending,若目录下很多文件,可能构建很慢或者失败。