Dockerfile用于构建docker镜像,本章节从一个Dockerfile的例子讲起,先整体看下具体做了什么,在详细介绍每条指定的作用与用法。
1、找到mysql的Dockerfile,并分析
mysql容器
点击图中红框进到mysql的github源码。
github mysql
选择5.7,打开Dockerfile
#构建镜像的依赖
FROM debian:buster-slim
# 执行添加组和添加用户的命令,不熟悉的同学看下mysql添加组和用户命令
RUN groupadd -r mysql && useradd -r -g mysql mysql
#更新依赖版本库、--no-install-recommends不安装非必须依赖、删除指定目录的文件
RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/*
# 环境变量 指定gosu版本,以便后面使用
ENV GOSU_VERSION 1.12
#执行很多的脚本命令,以反斜杆结尾代表一个命令,此处建议这么写,不能写多个run,以减少镜像的层数
RUN set -eux; \
savedAptMark="$(apt-mark showmanual)"; \
apt-get update; \
apt-get install -y --no-install-recommends ca-certificates wget; \
rm -rf /var/lib/apt/lists/*; \
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
gpgconf --kill all; \
rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
apt-mark auto '.*' > /dev/null; \
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
chmod +x /usr/local/bin/gosu; \
gosu --version; \
gosu nobody true
#创建docker-entrypoint-initdb.d文件
RUN mkdir /docker-entrypoint-initdb.d
#更新依赖源以及安装必要依赖
RUN