Docker從零構建php-nginx-alpine鏡像


雖然之前也曾用docker環境運行了一些項目,但對於鏡像這塊還不是很理解,且鑒於網上現成的鏡像都包含太多用不到的庫,所以決定從零開始構建一個自己的鏡像。

alpine linux為基礎鏡像

  1. docker pull gliderlabs/alpine

alpine linux 鏡像地址

目前最新的tag是3.8版本,鏡像只有4M的大小,非常的精簡。

運行鏡像

  1. docker run -it gliderlabs/alpine

運行后可以看到里面有基本的linux文件系統,這里不做演示,有興趣者可自行嘗試。

安裝php 和 nginx

  1. apk update
  2. apk add php7 nginx

接下來,根據自己的需要可以繼續安裝php相關擴展包,或者其他linux擴展包。

搜索擴展包,如php7工具包,可通過以下指令:

  1. # apk search php7

安裝php擴展

  1. apk add php7-mysqli php7-pdo_mysql php7-mbstring php7-json php7-zlib php7-gd php7-intl php7-session php7-fpm php7-memcached

目錄結構

  • php7目錄: /etc/php7
  • nginx目錄: /etc/nginx

啟動php-fpm和nginx

  1. # 先創建pid文件,否則nginx運行不了
  2. mkdir /run/nginx
  3. touch /run/nginx/nginx.pid
  4. # 先運行php,再運行nginx
  5. /usr/sbin/php-fpm7
  6. /usr/sbin/nginx

至此,能看到php和nginx正常運行,鏡像環境已經基本完成了。 接下來,可以看看怎么把這個鏡像保存起來。

創建鏡像

另起一個終端,用 docker ps查看鏡像ID,如下指令可以保存鏡像:

  1. docker commit -a "yisonli" -m "my first php7-nginx" 9d9c6030e5e9 yisonli/php7-nginx-alpine:0.1

注:9d9c6030e5e9為鏡像ID,yisonli/php7-nginx-alpine為保存的鏡像名,版本定義為0.1

運行新生成的鏡像

綁定8080端口看看效果

  1. docker run -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1

手動啟動php-fpm和nginx后,瀏覽器就可看到效果了。
http://127.0.0.1:8080/index.php

docker補充記錄

【共享文件夾】

  1. docker run -v `pwd`/www:/var/www/html -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1

【刪除未運行的容器】

  1. docker rm $(docker ps -a -q)

【用Dockerfile方式構建鏡像】

  1. docker build -t yisonli/php7-nginx-alpine:0.2 .

0.2是本文流程稍作優化后,寫成Dockerfile后build出來的,而且帶啟動腳本。
已上傳到 Docker Hub,可供下載研究。

【給鏡像添加額外的tag標簽】

    1. docker tag 9d9c6030e5e9 test/mytag

 

我的原文鏈接: https://mp.weixin.qq.com/s/Ojd3xyWUpsrPfsWRbOBVIg

 


免責聲明!

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



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