Docker從零構建php-nginx-alpine映象
雖然之前也曾用docker環境執行了一些專案,但對於映象這塊還不是很理解,且鑑於網上現成的映象都包含太多用不到的庫,所以決定從零開始構建一個自己的映象。
alpine linux為基礎映象
docker pull gliderlabs/alpine
目前最新的tag是3.8版本,映象只有4M的大小,非常的精簡。
執行映象
docker run -it gliderlabs/alpine
執行後可以看到裡面有基本的linux檔案系統,這裡不做演示,有興趣者可自行嘗試。
安裝php 和 nginx
apk update
apk add php7 nginx
接下來,根據自己的需要可以繼續安裝php相關擴充套件包,或者其他linux擴充套件包。
搜尋擴充套件包,如php7工具包,可通過以下指令:
# apk search php7
安裝php擴充套件
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
# 先建立pid檔案,否則nginx執行不了
mkdir /run/nginx
touch /run/nginx/nginx.pid
# 先執行php,再執行nginx
/usr/sbin/php-fpm7
/usr/sbin/nginx
至此,能看到php和nginx正常執行,映象環境已經基本完成了。 接下來,可以看看怎麼把這個映象儲存起來。
建立映象
另起一個終端,用 docker ps
檢視映象ID,如下指令可以儲存映象:
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埠看看效果
docker run -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1
手動啟動php-fpm和nginx後,瀏覽器就可看到效果了。
http://127.0.0.1:8080/index.php
docker補充記錄
【共享資料夾】
docker run -v `pwd`/www:/var/www/html -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1
【刪除未執行的容器】
docker rm $(docker ps -a -q)
【用Dockerfile方式構建映象】
docker build -t yisonli/php7-nginx-alpine:0.2 .
0.2是本文流程稍作優化後,寫成Dockerfile後build出來的,而且帶啟動指令碼。
已上傳到 Docker Hub,可供下載研究。
【給映象新增額外的tag標籤】
docker tag 9d9c6030e5e9 test/mytag
我的原文連結:https://mp.weixin.qq.com/s/Ojd3xyWUpsrPfsWRbOBVIg
相關文章
- docker構建映象Docker
- Docker映象構建(五)Docker
- docker構建supervisor映象Docker
- Docker 構建 kubectl 映象Docker
- Docker映象構建原理解析(不裝docker也能構建映象)Docker
- docker 構建自己的映象Docker
- Docker 映象構建之 DockerfileDocker
- Docker 分階段構建映象Docker
- Docker 構建多平臺映象Docker
- Docker構建多平臺映象Docker
- Docker 構建PHP 映象環境DockerPHP
- Docker 映象分階段構建Docker
- 不用安裝docker也能構建docker映象Docker
- 從零構建一個基於Docker的Laravel應用DockerLaravel
- docker映象構建libreoffice轉換檔案Docker
- 構建 Docker 映象的 N 個小技巧Docker
- 從0開始構建一個瀚高資料庫Docker映象資料庫Docker
- 從零構建Android工程Android
- SpringBoot 構建 Docker 映象的最佳 3 種方式Spring BootDocker
- apisix閘道器-構建docker映象構建及外掛化開發APIDocker
- 使用Docker buildx 為 .NET 構建多平臺映象DockerUI
- 使用 Docker 開發 - 使用多階段構建映象Docker
- docker:映象構建、倉庫、壓縮、匯入 二Docker
- Docker容器 關於映象構建的安全問題Docker
- 從原始碼構建docker-ce原始碼Docker
- Jenkins中構建(Build)Docker映象時出現permission deniedJenkinsUIDocker
- Docker映象構建:技術深度解析與實踐指南Docker
- 構建 Go 應用 docker 映象的十八種姿勢GoDocker
- Docker Buildx使用教程:使用Buildx構建多平臺映象DockerUI
- 構建私有映象
- DockerFile構建映象Docker
- [Dockerfile構建映象]Docker
- Docker 從入門到進階三:構建自己的映象並分享給大家用Docker
- 從零構建 Laravel 論壇一:序言Laravel
- 用 Docker 構建 MySQL 主從環境DockerMySql
- 怎樣去構建一個優質的Docker容器映象Docker
- 實戰Spring Boot 2.0系列(一) – 使用Gradle構建Docker映象Spring BootGradleDocker
- 實戰Spring Boot 2.0系列(一) - 使用Gradle構建Docker映象Spring BootGradleDocker