基於Alpine構建php7+nginx


什么是Alpine?

  Alpine 是一個基於musl libc和busybox的面向安全性的輕量級Linux發行版。簡單來說就是一個精簡的linux系統。最新的3.11.6標准版本安裝包只有120M左右。

為什么基於Alpine構建我們的docker環境呢?

  基於docker的部署方式給運維工作帶來了極大的便利,但是鏡像的大小有時候影響了部署的速度。基於apline構建的鏡像可以明顯減小鏡像的存儲占用。方便拷貝和下載。

 如何快速構建鏡像:

  一般的web項目都是lnmp方式部署。但是考慮到數據獨立存儲。我在鏡像中只集成了php73 和 nginx.

 

先寫個啟動腳本 run.sh,內容如下:

#!/bin/sh
mkdir -p /run/nginx
/usr/sbin/nginx
/usr/sbin/php-fpm7
tail -f /etc/hosts

 

再將如下內容復制到Dockerfile中,跟run.sh 放在一起。

 

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 add build-base curl shadow openssh bash libxml2-dev openssl-dev libjpeg-turbo-dev libpng-dev libxpm-dev freetype-dev gd-dev gettext-dev libmcrypt-dev binutils && \
    addgroup www  && \
    adduser -G www -D -s /sbin/nologin www  && \
    apk add nginx && \
    apk add php7 php7-fpm php7-opcache php7-curl php7-gd php7-mbstring php7-mysqli php7-json php7-mcrypt php7-redis php7-pdo  redis  && \
    apk del build-base shadow binutils && \
    #rm -rf  /var/cache/apk/* && \
    chmod +x /run.sh
EXPOSE  80
ENTRYPOINT ["/run.sh"]

 

然后執行命令

docker build -t alpine-php7.3.17-nginx:1.2 .

 

成功則顯示如下,我也是嘗試了幾次成功的,可能跟網速有關。下面顯示用了cache。

 

接下來 我們嘗試啟動一個名為 afei 的容器

docker run   --name afei  -d  alpine-php7.3.17-nginx:1.2 .

 查看啟動情況

 

進入容器查看進程。

 

 

 

 至此,php-fpm和nginx都已啟動。

可以將自己php和nginx的配置文件映射至容器的如下兩個目錄

/etc/php7/php.ini

/etc/nginx/conf.d/default.conf

如果線上使用,最好在Dockerfile中指定安裝的php和nginx版本。並經過運維的審核。

工具用的好,下班回家早。祝好!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM