Linux

Dockerfile

Dockerfile编写规范

版本控制

  • Dockerfile务必使用版本控制管理,如:git;
  • Dockerfile中著名l

声明版本信息

# Redis - CmsTop Docker Image
#
# VERSION 1
# AUTHOR: CmsTop
# COMMAND:
#    See: build.sh
#

FROM

来源镜像尽量指定版本号

FROM redis:3.0.3

MAINTAINER

注明维护者信息

ENV - 环境变量

  • 前缀,如:Redis容器加 REDIS_作为前缀;
  • 默认值,给常量设置默认值;
  • 配置,与配置文件保持一致,如:maxmemoryREDIS_MAXMEMORY;
  • 路径,尽量固定,可能会变化的路径最好配置环境变量;
  • 多个环境变量,可以使用\来配置多个环境变量;

RUN

Docker对RUN数量有限制最大不能超过127,尽可能少用RUN,多个RUN可用命令之间可用; \换行或&&连接,如:

RUN ./configure; \
    make; \
    make install
RUN ./configure && make && make install

COOY - 拷贝文件

COPY只能使用相对路径

Forbidden path outside the build context: src (/data/src)

Dockerfile配置实例:

# Redis - CmsTop Docker Image
#
# VERSION 1
# AUTHOR: CmsTop
# COMMAND:
#    See: build.sh
#

# Basic Image
FROM redis

# Maintainer
MAINTAINER from www.cmstop.com by [email protected]

# Env
ENV REDIS_CONF=/usr/local/etc/redis/redis.conf \
    REDIS_PORT=6379 \
    REDIS_BIND=0.0.0.0 \
    REDIS_DATA=/data/ \
    REDIS_LOG=/data/redis.log \
    REDIS_CONFIG=redis_config \
    REDIS_MAXMEMORY=2147483648 \
    REDIS_MAXCLIENTS=1000 \
    REDIS_REQUIREPASS=123456

# Volume
VOLUME ["${REDIS_LOG}", "${REDIS_DATA}"]

COPY redis.conf $REDIS_CONF
COPY run.sh /run.sh

RUN chmod +x /run.sh
CMD ["/run.sh"]