Dockerfile基本命令

基本命令

[TOC]

FROM

指定基础镜像,必须为第一条指令

FROM <\image>

RUN

运行指定的命令

1)RUN < \command >

2)RUN ["executable","param1", "param2" ]

两种写法输出hello 对比

RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME'
RUN ["/bin/bash", "-c", "echo hello"]

CMD

1)CMD ["executable","param1","param2"]

2)CMD ["param1","param2"]

3)CMD command param1 param2

CMD [ "sh", "-c", "echo $HOME" ]
CMD [ "echo", "$HOME" ]
CMD echo $HOME

必须为 " " 而不是单引号,因为解析的是一个JSON格式

RUN是在容器构建过程中的命令

CMD是在容器启动时执行的命令

LABEL

指定镜像标签

LABEL = = = ...

MAINTAINER

指定作者

MAINTANER

EXPOSE

暴露容器运行时的监听端口给外部

ENV

设定环境变量

1)ENV #只能设置一个

2)ENV =... #可以设置多个

ADD

把文件复制到镜像中

ADD

src为文件或者url

dest 为路径(绝对路径或者相对路径)

ADD test django\
ADD http://example.com/

COPY

把文件复制到镜像中

但是只能复制本地文件

ENTRYPOINT

启动时的默认命令

只能写一条,容器启动时运行

1)ENTRYPOINT ["executable", "param1", "param2"]

2)ENTRYPOINT command param1 param2

VOLUME

可以进行挂载,将本地文件夹或者其他容器中的文件挂到容器中

VOLUME ["/data"]

USER

设置启动容器的用户

1)USER daemo #用户

2)USER UID #UID

WORKDIR

工作目录 相当于cd

WORKDIR /PATH/TO/WORKDIR

指定目录如果不存在,则会创建

WORKDIR /a

WORKDIR b

WORKDIR c

pwd执行的结果是/a/b/c

ARG

ONBUILD

STOPSIGNAL

HEALTHCHECK

项目编写需要注意一些东西

一共有两种方法去部署django项目

1.使用nginx+uwsgi+django+docker+Supervisord 其中Supervisord 进程控制管理器

原因 因为Docker部署需要遵守一个规则,就是一个容器中只能有一个进程,比如这里我们使用uwsgi+nginx 就会有双线程运作

这样就会部署不成功。因此我们要使用SuperVisord 进程控制管理,将uwsgi和nginx的进程放在这个里面 用它来管理,这样就只有一个进程了。 小项目部署

2.分离部署。为了遵守运行的规则,因此我们可以将uwsgi部署在一个容器中,nginx部署在另一个容器中。并且使用--link来进行连接。

你可能感兴趣的:(Dockerfile基本命令)