1、創建目錄,上傳包
創建項目目錄
$ mkdir apache_php $ cd apache_php
把包下載后放到服務器該目錄下
$ ls apr-1.6.5.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.39.tar.gz php-7.2.9.tar.gz
2、創建Dockerfile
$ vi Dockerfile
# From表示使用centos:latest這個鏡像為基礎構建我們的鏡像 FROM centos:latest # 創建者的基本信息 MAINTAINER xiaozhou (xiaozhou@docker.com) # 把下載好的源碼包copy到容器,使用ADD會自動將文件解壓,/src/ 是容器中存放文件的目錄,目錄不存在會自動創建 ADD apr-1.6.5.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.39.tar.gz php-7.2.9.tar.gz /src/ # RUN命令會在容器中執行,每次執行都會創建一層新的鏡像,這里為了減少層數使用\換行,使用 && 將命令連接 RUN yum -y install gcc make zlib-devel pcre-devel pcre \ #安裝apache依賴庫apr && cd /src && cd apr-1.6.5 \ && ./configure --prefix=/usr/local/apr/ && make && make install \ && cd /src && cd apr-util-1.6.1 \ # 需要先安裝expat-devel,不然安裝apr-util會報錯 && yum -y install expat-devel \ && ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/ \ #安裝apache依賴庫 apr-util && make && make install \ && cd /src && cd httpd-2.4.39 \ && ./configure \ --prefix=/usr/local/apache/ \ #指定剛才安裝的apr目錄 --with-apr=/usr/local/apr/ \ #指定剛才安裝的apr-util目錄 --with-apr-util=/usr/local/apr-util/ \ --enable-so \ --enable-deflate=shared \ --enable-expires=shared \ --enable-rewrite=shared \ --enable-static-support \ #編譯apache && make && make install \ && cd /src && cd php-7.2.9 \ && yum -y install libxml2-devel \ # 安裝php依賴 && yum -y install openssl openssl-devel libcurl-devel perl \ # apxs沒有指定perl的路徑需要修改這個文件,不然會報錯 && sed -i '1i\#!/usr/bin/perl -w' /usr/local/apache/bin/apxs \ # 擴展可以按需選擇,這里只加了常用的,擴展有依賴的需要先使用yum安裝對應依賴 && ./configure \ -prefix=/usr/local/php \ --with-pdo-mysql \ --with-curl \ --enable-bcmath \ --with-openssl \ --enable-mbstring \ --enable-opcache \ # 指定剛才安裝的apache位置 --with-apxs2=/usr/local/apache/bin/apxs \ && make && make install # 將端口暴露出去,注意:這只是一個聲明,在運行時並不會因為這個聲明應用就會開啟這個端口的服務。要在宿主機中訪問這個端口可以在運行時加上 -p 80:80 這樣訪問宿主機80端口就會映射到容器的80端口 EXPOSE 80 # 啟動服務命令 CMD ["/usr/local/apache/bin/httpd", "-DFOREGROUND"]
3、構建鏡像
$ docker build -t apache:php .
4、啟動容器
$ docker run -it -d -p 80:80 apache:php
瀏覽器訪問,看見出現 It works! ,說明部署成功
http://192.168.121.121
參考:
https://phperzh.com/articles/3175
