每个Dockerfile的第一条指令都应该是FROM,FROM指令指定一个已经存在的镜像后续指令都将基于该镜像进行,这个镜像被称为基础镜像(base iamge)。在上面的Dockerfile示例中,我们指定了alpine:3.14作为镜像的基础镜像,基于这个Dockerfile构建的新镜像将以alpine:3.14操作系统为基础,在运行一个容器时,必须要指明是基于哪个基础镜像在进行构建。
FROM指令的格式如下:
FROM [--platform=] [AS]
OR
FROM [--platform=] [:] [AS]
OR
FROM [--platform=] [@] [AS]
FROM指令表示初始化一个新构建并作为后续指令的基本映像,所以一个有效的Dockerfile文件必须以FROM指令开始,为个镜像也必须是一个有效镜像,可以从一些公用库中来获取相应的镜像。
但ARG可以放在FROM指令前面,关于ARG和FROM如何交互将会在后面介绍。
FROM可以在单个Dockerfile中多出现,这样可以创建多个映像,或将一个构建阶段用作另一个构建阶段的依赖库。
FROM指令可以支持由其上一个指令ARG指令声明的变量,并传递给FROM指令使用。
以下是几种镜像的编写:
php-apache_dockerfile
#基础镜像
FROM php:7.4-apache
#环境变量,用于登录MySQL
ENV MYSQL_ROOT_PASSWORD 6666
#下载php扩展mysqli,用于对数据库进行操作
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \
&& apt-get clean\
&& apt-get update\
&&apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) mysqli
MySQL_dockerfile
#基础镜像
FROM mysql
#作者信息
MAINTAINER by (这里可自行填写但所有镜像必须用一样的ID)
#设置root密码
ENV MYSQL_ROOT_PASSWORD 6666
#设置不可免密登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD no
#为docker_mysql创建数据库
ENV MYSQL_DATABASE docker_mysql
#创建新用户
ENV MYSQL_USER=docker
ENV MYSQL_PASSWORD=123456
phpmyadmin_dockerfile
#基础镜像
FROM phpmyadmin/phpmyadmin
#作者信息
MAINTAINER by (这里可自行填写但所有镜像必须用一样的ID)
这里是几个常用的镜像,仅供大家可以参考,如有做的不好,欢迎大家私信!感谢!