用docker搭建php開發環境

今天是2018.06.19

docker搭建php系列文章
[url=http://xieye.iteye.com/blog/2425200]用docker搭建php開發環境[/url]
[url=http://xieye.iteye.com/blog/2425211]用docker搭建php開發環境(2)[/url]
[url=http://xieye.iteye.com/blog/2425372]用docker搭建php開發環境(3)[/url]

本文主要參考了:
https://www.goozp.com/article/77.html
原作者:
咖灰怪’s Blog

總體來說,利用docker安裝php環境分爲兩步。
1.安裝docker。
2、安裝docker下的php開發環境。

[b]中間的坑有無數。[/b]

[size=xx-large]1、安裝docker[/size]

官方的文檔其實已經非常詳細了。
我在附件中也直接提供。

我的電腦是win7,需要使用虛擬機,官方的安裝包裏全都有。

安裝程序名爲 DockerToolbox.exe(https://docs.docker.com/toolbox/toolbox_install_windows/,這個是網址,點擊頁面的 get docker toolbox for windows這個大按鈕,即可下載。)
基本按照默認即可(記住你的安裝程序路徑),爲了防雷,需要先刪除本機已經裝好的git,和虛擬機。

安裝完畢,生成三個快捷方式,打開Docker Quickstart Terminal,

初始化,初始化也是個大難點。
點擊Docker Quickstart Terminal圖標開始初始化,會有一個cmd窗口出現。

注意點:
注意點 1、boot2docker.iso文件總會自動遠程下載,,最佳策略,中止安裝,把安裝程序路徑下的boot2docker.iso拷貝到C:\Users\<UserName>\.docker\machine\cache中(總之,這個應該拷貝的目的地是可以通過cmd窗口看到的路徑),然後把網線拔了,然後再次初始化動作。

額外說明,其實如果想要最新的iso也行,方法是:
https://api.github.com/repos/boot2docker/boot2docker/releases/latest
根據上面這個網址,找到html_url字段,然後用迅雷下載。


注意點 2、虛擬化設置
有可能需要改筆記本或者臺式機的bios設置。
進去BIOS (惠普的電腦開機的時候 長按ESC進入BIOS)設置 Virtualization爲enable。

這一步不同的機子不一樣,只要進去了BIOS自己找這個設置在哪裏。


假定你已經安裝成功了,就能看到大鯨魚。
執行命令
docker --version
可以看到你安裝的docker的版本。我的是 18.03


[size=xx-large]2、安裝php[/size]
如前所述。是參考了他人的文章,
[size=x-large](1)安裝前的配置[/size]
[size=large]1、配置虛擬機的80和windows宿主機的80端口相連。[/size]
雙擊虛擬機圖標。
菜單設置 - 網絡 - 網卡1 - 連接方式 NAT - 端口轉發 - 右邊添加按鈕,名稱自己起,協議tcp,主機ip127.0.0.1,主機端口80,子系統端口80

注意這裏,主機指windows宿主機,子系統指虛擬機。

[size=large]2、配置虛擬機的一個目錄和windows宿主機的一個目錄相連。[/size]
共享文件夾這麼設置。
首先本地D:\ lenovo_d \ docker_study ,建立這個文件夾。
然後
虛擬機菜單 - 設置 - 共享文件夾 - 固定分配 - 添加按鈕 - 名稱 docker_study 路徑,就是上面的本地路徑。自動掛載是,訪問權限,完全。

然後呢,自己測試一下,看在window宿主機的d盤目錄下建立文件,是否在虛擬機裏能看到這個文件。

可能需要重啓虛擬機。


[size=large]3、使用putty連接docker。[/size]
爲了更象在linux裏使用docker,我使用了putty這個工具。
網上可以下載到,解壓後即可使用。
下載地址:
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
隨便zip也行,或者msi也行。32也行,64也行,都能用。

ip
127.0.0.1
端口:
打開虛擬機圖標,查看設置-網絡- 端口轉發 - ssh的主機端口。
賬號填寫docker,密碼是tcuser。

點擊login即可登陸虛擬機裏的docker。
下文說的docker裏,就是指打開putty登陸後的窗口。

[size=large]4、不是必須步驟,僅供參考。[/size]
現在,如果想要虛擬機的文件放在非c盤。
轉移docker文件到D盤。
爲避免c盤越來越大,可以轉移虛擬機鏡像到D盤。
首先,在資源管理器裏面給D盤加目錄D:\docker_machine,然後把C盤下面目錄的machine這個目錄剪切到D:\docker_machine下,
然後,在cmd命令行
mklink /J C:\Users\Administrator\.docker\machine D:\docker_machine\machine

這樣,C盤那個目錄就只是鏈接而已,不佔用硬盤空間。


[size=x-large](2)安裝docker-compose[/size]
這個東東,是相當於docker的強化命令。因爲,docker下,通常會同時運行幾個容器,例如對於php,來說,有php-fpm,nginx,mysql,redis這個地球人都知道的四大必備工具。

docker下,執行命令

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose



[size=x-large](3)php開發環境[/size]
本機,docker_study目錄下建立 D:\lenovo_d\docker_study\zphal 目錄
然後下載https://github.com/ZpGuo/zPhal-dockerfiles
點擊下載zip文件,下載後,解壓,再放到zphal目錄下。

進入docker,
cd zphal/files

wget https://pecl.php.net/get/redis-3.1.6.tgz -O php/pkg/redis.tgz

然後,自己下載php自己的composer,版本1.6.5,需自己番 qiang,或者從我這篇文章的附件獲取。文件名是composer.phar.拷貝到和redis.tgz一樣的目錄。


修改 D:\lenovo_d\docker_study\zphal\files\php\Dockerfile
把下面的話刪除掉。

# Install Phalcon extensions
RUN cd /home \
&& tar -zxvf cphalcon.tar.gz \
&& mv cphalcon-* phalcon \
&& cd phalcon/build \
&& ./install \
&& echo "extension=phalcon.so" > /usr/local/etc/php/conf.d/phalcon.ini


把下面的話刪除掉。

COPY ./pkg/cphalcon.tar.gz /home/cphalcon.tar.gz


把下面的話刪除掉。

rm rm -f /home/cphalcon.tar.gz


然後再加上composer的配置,完整版如下:

FROM php:7.2-fpm
MAINTAINER goozp "[email protected]"

# set timezome
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# Install package and PHP Core extensions
RUN apt-get update && apt-get install -y \
git \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install opcache \
&& docker-php-ext-install mysqli \
&& rm -r /var/lib/apt/lists/*

# Copy extensions had downloaded
COPY ./pkg/redis.tgz /home/redis.tgz
COPY ./pkg/composer.phar /usr/local/bin/composer

# Install PECL extensions (Redis)
RUN pecl install /home/redis.tgz && echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini


# Install Composer
ENV COMPOSER_HOME /root/composer
# RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ENV PATH $COMPOSER_HOME/vendor/bin:$PATH

RUN chmod a+x /usr/local/bin/composer
RUN rm -f /home/redis.tgz

WORKDIR /data

# Write Permission
RUN usermod -u 1000 www-data




然後,在
D:\lenovo_d\docker_study\zphal\app 目錄下建立一個index.php
內容是

<?php
phpinfo();


準備工作已經差不多了。

但是還需要修改國內倉庫地址
sudo vi /var/lib/boot2docker/profile

在--label provider=virtualbox的下一行添加:
--registry-mirror=https://registry.docker-cn.com
3.重啓docker

需要先執行
docker-compose build這個命令。

最後執行

docker-compose up -d


此時,容器都已正常啓動。


最後,在宿主機打開瀏覽器
http://localhost/index.php

如果一切順利(基本是不可能的),就會出現php的頁面啦。

關閉容器,使用
docker-compose down這個命令。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章