docker 打包发布

阿里云镜像

扩展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 " \
    --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,所以当一切调试就绪,换个空目录就好了

你可能感兴趣的:(docker 打包发布)