phpdocker
『壹』 怎麼樣使用Docker部署一個php開發環境
安裝Docker
平時開發的環境一般都是Mac或者Windows,所以接下來只針對前兩者寫下步驟,這兩個平台,官方都推薦了兩種安裝方式:app和工具包(toolbox)。註:app方式對系統版本和配置會有一定要求,Mac版本會自動為你安裝好VM(虛擬機),但Windows需要你安裝微軟虛擬化產品Hyper-V,而toolbox方式則需要你額外安裝virtualbox來作為docker的VM。
『貳』 php運行docker命令失敗
你的php程序是運行在docker容器內還是docker主機上?容器內的php是不能訪問主機的,更不可能運行docker命令
『叄』 使用PHP調用Docker 命令 為什麼不能成功
應該是php許可權不足導致的,可以把system執行後返回的狀態碼打出來看一下,想看到具體的返回結果可以用exec命令.你看過後很簡單吧以後不會可以向我一樣經常到後盾人平台找找相關教材看看就會了,希望能幫到你,給個採納吧謝謝罒㉨罒
『肆』 自己私下寫php項目怎麼用docker
首先還是從一個PHP在Docker容器下的Hello World實例開始。我們准備這樣一個PHP文件index.php
<?php
echo"PHPinDocker";
然後在同目錄下創建文本文件並命名為Dockerfile,內容為:
#從官方PHP鏡像構建
FROMphp
#將index.php復制到容器內的/var/www目錄下
ADDindex.php/var/www/
#對外暴露8080埠
EXPOSE8080
#設置容器默認工作目錄為/var/www
WORKDIR/var/www/
#容器運行後默認執行的指令
ENTRYPOINT["php","-S","0.0.0.0:8080"]
構建這個容器:
dockerbuild-tallovince/php-helloworld.
運行這個容器
dockerrun-d-p8080:8080allovince/php-helloworld
查看結果:
curllocalhost:8080
PHPinDocker
這樣我們就創建了一個用於演示PHP程序的Docker容器,任何安裝過Docker的機器都可以運行這個容器獲得同樣的結果。而任何有上面的php文件和Dockerfile的人都可以構建出相同的容器,從而完全消除了不同環境,不同版本可能引起的各種問題。
想像一下程序進一步復雜,我們應該如何擴展呢,很直接的想法是繼續在容器內安裝其他用到的服務,並將所有服務運行起來,那麼我們的Dockerfile很可能發展成這個樣子:
FROMphp
ADDindex.php/var/www/
#安裝更多服務
RUNapt-get
install-y
mysql-server
nginx
php5-fpm
php5-mysql
#編寫一個啟動腳本啟動所有服務ENTRYPOINT
["/opt/bin/php-nginx-mysql-start.sh"]
雖然我們通過Docker構建了一個開發環境,但覺不覺得有些似曾相識呢。沒錯,其實這種做法和製作一個虛擬機鏡像是差不多的
『伍』 怎麼使用Docker搭建PHP開發環境
在Docker流行之前,要搭建開發環境通常有兩種選擇:一種是使用wamp、xampp、mamp等集成開發環境安裝包,另外一種就是使用普通虛擬機來安裝linux伺服器,然後通過下載一鍵安裝包(如:lnmp)或者逐個安裝做需要的軟體。前者雖然簡單,但太不靈活,想要安裝額外的軟體或者版本會很麻煩或者乾脆不知道如何下手;後者除了費時費力,佔用本機資源過多,可能會導致系統運行緩慢,而且如果你忘了及時生成快照,一旦失誤,追悔莫及。
幸好,Docker來了!它簡單易用,靈活多變,方便迅捷,掃除了以上種種弊端。如果你想稍微詳細的認識下這位虛擬化界的明星,傳送門( 快速理解Docker )。
安裝Docker
平時開發的環境一般都是Mac或者windows,Linux暫時沒有研究,所以接下來只針對前兩者寫下步驟,這兩個平台,官方都推薦了兩種安裝方式:app和工具包(toolbox)。註:app方式對系統版本和配置會有一定要求,而且Windows需要你安裝微軟虛擬化產品Hyper-V,具體見app鏈接頁面。
APP
https://docs.docker.com/docke...
https://docs.docker.com/docke...
工具包
https://www.docker.com/proc...
以上方式本質上都會在你的系統中安裝docker-engine、docker-machine、docker-compose和VirtualBox(除了Windows的app方式)。因為docker高度依賴linux內核提供的cgroup,namespace 等特性和介面,所以mac和windows平台需要使用docker-machine和虛擬機在後台創建運行一個linux內核。
而我的安裝方式就是直接在 Mac 上使用brew,如果你未曾安裝brew,則在終端執行以下代碼:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝docker所需要的包:
brew install docker docker-machine docker-compose virtualbox
創建一個do
『陸』 docker 安裝php擴展出錯,bash: docker-php-ext-install: command not found
不是這樣用的啊 進容器後 直接 yum install php 就完了 進容器後就不支持 docker+命令了
『柒』 docker 怎麼啟動php容器
這是最簡單的架構方式,在 Docker 發展早期,Docker 被大量的濫用,比如,一個鏡像內啟動多服務,日誌收集依舊是按照 Syslog 或者別的老方式,鏡像容量非常龐大,基礎鏡像就能達到 80M,這和 Docker 當初提出的思想完全南轅北轍了,而 Alpine Linux 發行版作為一個輕量級 Linux 環境,就非常適合作為 Docker 基礎鏡像,Docker 官方也推薦使用 Alpine 而不是 Debian 作為基礎鏡像,未來大量的現有官方鏡像也將會遷移到 Alpine 上。本文所有鏡像都將以 Alpine 作為基礎鏡像。
『捌』 如何開發一個 PHP + MySQL 的 Docker 化應用
首先要理解Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。
"Docker 化"的主要作用是方便移植問題,類似java和java虛擬機的開發思想,「一次編寫,到處運行」;
php和mysql一般是獨立的兩個服務,一般運行於apache、iis 或者Nginx之中,跟你開發php沒有關系。
創建 PHP 應用容器
> 因所有官方鏡像均位於境外伺服器,為了確保所有示例能正常運行,DaoCloud 提供了一套境內鏡像源,並與官方源保持同步。
首先,選擇官方的 PHP 鏡像作為項目的基礎鏡像。
dockerfile
FROM cloud.io/php:5.6-apache
接著,用官方 PHP 鏡像內置命令 docker-php-ext-install 安裝 PHP 的 MySQL 擴展依賴。
dockerfile
RUN docker-php-ext-install pdo_mysql
依賴包通過 docker-php-ext-install 安裝,如果依賴包需要配置參數則通過docker-php-ext-configure 命令。
安裝 pdo_mysql PHP 擴展。
然後,將代碼復制到目標目錄。
dockerfile
COPY . /var/www/html/
因為基礎鏡像內已經聲明了暴露埠和啟動命令,此處可以省略。
至此,包含 PHP 應用的 Docker 容器已經准備好了。PHP 代碼中訪問資料庫所需的參數,是通過讀取環境變數的方式聲明的。
```php
$serverName = env("MYSQL_PORT_3306_TCP_ADDR", "localhost");
$databaseName = env("MYSQL_INSTANCE_NAME", "homestead");
$username = env("MYSQL_USERNAME", "homestead");
$password = env("MYSQL_PASSWORD", "secret");
/**
* 獲取環境變數
* @param $key
* @param null $default
* @return null|string
*/
function env($key, $default = null)
{
$value = getenv($key);
if ($value === false) {
return $default;
}
return $value;
}
```
這樣做是因為在 Docker 化應用開發的最佳實踐中,通常將有狀態的數據類服務放在另一個容器內運行,並通過容器特有的 link 機制將應用容器與數據容器動態的連接在一起。
綁定 MySQL 數據容器(本地)
首先,需要創建一個 MySQL 容器。
bash
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d cloud.io/mysql:5.5
之後,通過 Docker 容器間的 link 機制,便可將 MySQL 的默認埠(3306)暴露給應用容器。
bash
docker run --name some-app --link some-mysql:mysql -d app-that-uses-mysql
綁定 MySQL 數據服務(雲端)
比起本地創建,在雲端創建和綁定 MySQL 數據服務會更簡單。
在 GitHub 上 Fork DaoCloud/php-apache-mysql-sample 或者添加自己的代碼倉庫。
注冊成為 DaoCloud 用戶。
在 DaoCloud 「控制台」中選擇「代碼構建」。
創建新項目,選擇代碼源,開始構建鏡像。
在「服務集成」創建 MySQL 服務實例。
將構建的應用鏡像關聯 MySQL 服務實例並部署在雲端。
DaoCloud 使用圖文介紹
了解如何用 DaoCloud 進行代碼構建:參考 代碼構建 。
了解如何用 DaoCloud 進行持續集成:參考 持續集成 。
了解如何用為應用准備一個資料庫服務:參考 服務集成 。
了解如何部署一個剛剛構建好的應用鏡像:參考 應用部署 。
『玖』 如何在docker容器裏手動重啟php
include <QtCore/QCoreApplication>
#include <QAxObject>
#include <Windows.h>
int main(int argc, char *argv[])
{
//OleInitialize(0);
//CoInitialize(0);
QCoreApplication a(argc, argv);
QAxObject *asdfg = new QAxObject("Excel.Application");
return a.exec();
}
『拾』 docker 怎麼添加php擴展
將以下代碼保存為一份xxx.sh 並執行,即可擴展mysql、gd、phalcon
#! /usr/bin
PHP_VERSION=7.0.10
docker run --name php \
-v /home/wwwroot:/home/wwwroot \
-v ~/php_config/php.ini:/usr/local/etc/php/php.ini \
-p 9000:9000 \
-d php:${PHP_VERSION}-fpm
docker exec -it php sed -i "s/33/2016/g" /etc/passwd
docker exec -it php sed -i "s/33/2016/g" /etc/gr