docker:制作alpine+nginx+php镜像

前言

alpine 是一个轻量级安全地Linux系统,相比ubuntu和CentOS约200M的体积来说,它只有5M,简直令人难以置信。 我是很喜欢简洁的东西的,很多人说不要把docker当做虚拟来用,我暂时保留意见。
最初打算是搭建 ANMP的,但是 MySQL 官方没有提供 alpine 的包,只能下载 MariaDB ,出于对MySQL8的学习等各方面因素,我放弃了MySQL 。只把 nginx 和 php 放进去。

拉取镜像

拉取镜像:docker pull alpine
查看一下:docker images
进入容器:docker run -it --name aaa alpine测试容器名aaa

修改镜像源

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories这是阿里的,不改镜像源是真下载不动。

apk update

这里树莓派系统aarch64遇到了网络不通问题,无法解决
这里ubuntu我遇到了DNS的问题,vim /etc/resolv.conf 发现和容器外 192.168.0.1 不一致,修改后可以 。

下载nginx和php7扩展

apk add nginx
apk add php7
php -m 自带的扩展很少
apk add php7-fpm php7-pdo_mysql php7-mbstring php7-json php7-zlib php7-intl php7-session php7-curl php7-zip php7-dom php7-xmlwriter php7-xmlreader php7-simplexml php7-xmlrpc php7-opcache php7-gd php7-iconv php7-pecl-redis php7-bcmath(按需安装,这些比较常用)

启动服务

mkdir /run/nginx && touch /run/nginx/nginx.pid
nginx #启动
php-fpm7 #启动
备注:配置分别在/etc/nginx/etc/php7下自己配。(这里建议目录映射到本机。docker cp aaa:/etc/nginx /etc、docker cp aaa:/etc/php7:/etc/php7 先拷贝到本机上以备下次run时使用)

制作镜像

docker commit -a "作者" -m "描述" 容器号 iii:1.0 镜像名iii

使用镜像

docker run -itd --name 自定义容器名 -p 80:80 -v /var/www:/var/www iii:1.0
docker run -itd --name 自定义容器名 -p 80:80 -v /var/www:/var/www -v /etc/nginx:/etc/nginx -v/etc/php7:/etc/php7 iii:1.0 (配置目录映射)

redis镜像 - redis:alpine

镜像大小:约32M
镜像拉取:docker pull redis:alpine
运行容器:docker run -itd --name ar -p 6379:6379 redis:alpine --requirepass 密码

上一篇:ApacheCN PHP 译文集 20211101 更新


下一篇:PHP7新特性-简述