dockerfile
大约 1 分钟
dockerfile
dockerfile介绍
dockerfile是一个用于生成docker镜像组合命令的文件.
docker读取dockerfile配置命令自动生成镜像.
dockerfile结构
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行的指令
FROM
指定基础镜像,必须为第一个命令
FROM hyperf/hyperf:7.4-alpine-v3.11-swoole
LABEL
用于为镜像添加元数据
MAINTAINER
维护者信息
LABEL maintainer="Hyperf Developers <group@hyperf.io>" version="1.0" license="MIT" app.name="Hyperf"
ARG
用于指定传递给构建运行时的变量
ARG timezone
ENV
设置环境变量
ENV TIMEZONE=${timezone:-"Asia/Shanghai"} \
APP_ENV=prod
RUN
构建镜像时执行的命令
RUN set -ex \
echo "${TIMEZONE}" > /etc/timezone
WORKDIR
工作目录,类似于cd命令
WORKDIR /opt/www
COPY
复制数据到工作目录
COPY . /opt/www
EXPOSE
暴露容器端口
EXPOSE 9501
ENTRYPOINT
指令用于设定容器启动时第一个运行的命令及其参数
ENTRYPOINT ["php", "/opt/www/bin/hyperf.php", "start"]
dockerfile相关
# 注释命令
// 当命令发生错误的时候,停止脚本的执行
set -e
php环境
因为要减小docker的大小,所以使用了alpine版进行处理.
仅做测试用,如果要部署环境,直接使用FROM hyperf/hyperf:7.4-alpine-v3.11-swoole即可
docker pull php:7.3-cli-alpine3.13
docker run -dit -p 9500:80 -v ~/php73:/opt/php73 --name=php73 php:7.3-cli-alpine3.13 sh
docker exec -it php73 sh
sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories
apk add --no-cache autoconf g++ libtool make curl-dev libxml2-dev linux-headers
// 将redis下载到~/php73目录里
wget http://pecl.php.net/get/redis-5.3.4.tgz
pecl install /opt/php73/redis-5.3.4.tgz
// /usr/local/etc/php/conf.d/docker-php-ext-redis.ini
docker-php-ext-enable redis
// 将swoole下载到~/php73目录里
wget https://pecl.php.net/get/swoole-4.6.7.tgz
pecl install /opt/php73/swoole-4.6.7.tgz
// /usr/local/etc/php/conf.d/docker-php-ext-swoole.ini
docker-php-ext-enable swoole