Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
常用指令
FROM - 镜像从那里来
MAINTAINER - 镜像维护者信息
RUN - 构建镜像执行的命令,每一次RUN都会构建一层, 是在 docker build时运行。
CMD - 容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数。在docker run时运行。
ENTRYPOINT - 容器进入时执行的命令,不会被 docker run 的命令行参数指定的指令所覆盖
WORKDIR - 切换当前执行的工作目录
EXPOSE - 暴露端口
ADD - 添加文件,如果是压缩文件也解压
COPY - 添加文件,以复制的形式
::: tips 注意: Dockerfile 的指令每执行一次都会在docker上新建一层。所以过多无意义的层,会造成镜像膨胀过大。 以 && 符号连接命令,这样执行后,只会创建 1 层镜像。 :::
Dockerfile示例
################################
## 生成镜像 docker build -t resolve .
## 生成容器 docker run -it -v /root/wjl/resolve/code/:/data/drogon/--name=resolve resolve:latest bash
################################
FROM drogonframework/drogon
## 指定docker的工作目录
WORKDIR /data/drogon
## 复制文件到docker容器
## mysql mysqlconnect
ADD tool/include.tar /usr/local/
ADD tool/lib.tar /usr/local/
## curl log4cplus
ADD tool/curl-7.75.0.tar ./
ADD tool/log4cplus-1.2.1.tar ./
RUN cd curl-7.75.0 \
&& ./configure \
&& make && make install
RUN cd log4cplus-1.2.1 \
&& ./configure --enable-static CXXFLAGS="-std=c++0x" \
&& make && make install
## 拷贝代码
COPY code ./
EXPOSE 8082
CMD ["/bin/bash", "-c", "TSLC_BACKEND_RESOLVE/build/start.sh"]