0 开始之前
Dockerfile 作为一个规则文件可以方便镜像的构建,便于版本管理,工作中有用到打镜像,这里根据自己写的一个Dokefile脚本,记录下工作中Dockerfile常用的语法和一些常见的坑。
1 使用
1.1 FROM
一般用作引入基础镜像。
FROM csighub.tencentyun.com/xxx/xxx
1.2 LABEL
主要是对版本的说明。
LABEL For GameCommunity Golang CI
1.3 ENV
环境变量相关。
ENV GOPATH=/root/go \
LANG=zh_CN.UTF-8 \
LANGUAGE=zh_CN:zh \
LC_ALL=zh_CN.UTF-8
1.4 RUN
主要是包含一些在镜像机的执行命令(具体命令类型由CMD决定)。
RUN mkdir -p /data/home/user00 && \
useradd -Ms /bin/bash -d /data/home/user00 -g users user00 && \
chown -R user00:users /data/home/user00 && \
mkdir -p /data/rail && \
chown -R user00:users /data/rail && \
git clone https://github.com/protocolbuffers/protobuf.git --recurse && \
cd protobuf/ && \
./autogen.sh && \
./configure && \
make -j16 && \
make install && \
ldconfig && \
cd ~ && \
go get github.com/golang/protobuf/protoc-gen-go && \
mv $GOPATH/bin/protoc-gen-go /usr/bin
1.5 COPY
拷贝本机文件(只能找到相对于Dockerfile所在目录的路径)至镜像。
COPY go/bin/protoc-gen-trpc /usr/bin/
1.6 WORKDIR
登录镜像后的目录。
WORKDIR /data/home/user00
1.7 CMD
设置解析RUN命令的解析器。
CMD ["/bin/bash"]