Alpine 是一个基于musl libc和busybox的面向安全性的轻量级Linux发行版。简单来说就是一个精简的linux系统。最新的3.11.6标准版本安装包只有120M左右。
基于docker的部署方式给运维工作带来了极大的便利,但是镜像的大小有时候影响了部署的速度。基于apline构建的镜像可以明显减小镜像的存储占用。方便拷贝和下载。
一般的web项目都是lnmp方式部署。但是考虑到数据独立存储。我在镜像中只集成了php73 和 nginx.
#!/bin/sh
mkdir -p /run/nginx
/usr/sbin/nginx
/usr/sbin/php-fpm7
tail -f /etc/hosts
FROM alpine:3.11
COPY run.sh /
RUN cd / && \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories && \
apk update && \
apk --no-cache add curl openssh bash libxml2-dev openssl-dev libjpeg-turbo-dev libpng-dev libxpm-dev freetype-dev gd-dev gettext-dev libmcrypt-dev && \
addgroup www && \
adduser -G www -D -s /sbin/nologin www && \
apk --no-cache add nginx && \
apk --no-cache add php7 php7-fpm php7-opcache php7-curl php7-gd php7-mbstring php7-mysqli php7-json php7-mcrypt php7-redis php7-pdo redis && \
rm -rf /var/cache/apk/* && \
chmod +x /run.sh
EXPOSE 80
ENTRYPOINT ["/run.sh"]
#CMD ["nginx", "-g", "daemon off;"]
docker build -t alpine-php7.3.22-nginx1.16.1:v1 .
docker run --rm --name test alpine-php7.3.22-nginx1.16.1:v1
/etc/php7/php.ini
/etc/nginx/conf.d/default.conf