阿里云镜像
扩展mysqli, redis
FROM registry.cn-hangzhou.aliyuncs.com/eureka/alpine-nginx-php7
RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.7/main" > /etc/apk/repositories && \
echo "http://dl-cdn.alpinelinux.org/alpine/v3.7/community" >> /etc/apk/repositories && \
apk update /etc/apk/repositories && \
apk add --no-cache \
bash \
curl \
libxml2 \
php7-xml \
php7-openssl \
php7-bcmath \
php7-redis \
php7-mcrypt \
php7-mysqli \
unzip
这里遇到一个问题
Error relocating /usr/lib/php7/modules/mysqli.so: zend_vspprintf: symbol not found in Unknown on line 0
Error relocating /usr/lib/php7/modules/redis.so: zend_vspprintf: symbol not found in Unknown on line 0
因为装的是php7.1.7,alpine默认php扩展都是去最新版本(php7.2.9)拉代码,所以会不兼容报错。
所以apk add
前指定一下alpine v3.7仓库,就能完美解决
配置nginx php-fpm
sudo docker run exec -it php5 bash
## nginx目录 /etc/nginx/
## redis目录 /etc/php7/php-fpm.d/www.conf
修改之后sudo docker restart
一下就生效了
打成镜像
docker commit \
--author "Tao Wang <twang2218@gmail.com>" \
--message "修改了默认网页" \
webserver \ ## 容器ID或容器名
aliyunstore:web_base ## 仓库名:标签
每次有代码发布时的 Dockerfile,生成一个对应版本的镜像
FROM web_base
## 把php源码等挂载到镜像里,用于发布版本部署代码
COPY ./www /alidata/www/hunlijirel/p/wedding
最后得到docker 仓库可能就变成了这样,发布、灰度、伸缩、回退都变得迅速
docker image: api_v1_20180101
docker image: api_v2_20180208
docker image: api_v2_20180315
缓存:多次修改Dockerfile后发现产生的image越来越大,docker会根据Dockerfile路径生成缓存,build前send到新构建的image,所以当一切调试就绪,换个空目录就好了