摘要:更換源更新源使用的源通過安裝腳本安裝應(yīng)用所需要的依賴。
有了第二篇《使用 Docker 搭建簡易的 Java Web 環(huán)境 (二)》,懂了如何通過單一鏡像創(chuàng)建 Docker 環(huán)境,這篇主要學(xué)習(xí)如何使用「docker-compose」。目標(biāo)是:搭建 Laravel 開發(fā)環(huán)境
Laravel 安裝Laravel 讓我們書寫優(yōu)雅的代碼
為 Web 藝術(shù)家創(chuàng)造的 PHP 框架
學(xué)習(xí) Laravel,或者 PHP,不得不使用 composer。
composerComposer 是 PHP 的一個依賴管理工具。它允許你申明項目所依賴的代碼庫,它會在你的項目中為你安裝他們。
Composer 不是一個包管理器。是的,它涉及 "packages" 和 "libraries",但它在每個項目的基礎(chǔ)上進(jìn)行管理,在你項目的某個目錄中(例如 vendor)進(jìn)行安裝。默認(rèn)情況下它不會在全局安裝任何東西。因此,這僅僅是一個依賴管理。這種想法并不新鮮,Composer 受到了 node"s npm 和 ruby"s bundler 的強(qiáng)烈啟發(fā)。而當(dāng)時 PHP 下并沒有類似的工具。
Composer 將這樣為你解決問題:
a) 你有一個項目依賴于若干個庫。
b) 其中一些庫依賴于其他庫。
c) 你聲明你所依賴的東西。
d) Composer 會找出哪個版本的包需要安裝,并安裝它們(將它們下載到你的項目中)。
參考:http://docs.phpcomposer.com/00-intro.html
1.使用 php 命令安裝
php -r "copy("https://getcomposer.org/installer", "composer-setup.php");" php -r "if (hash_file("SHA384", "composer-setup.php") === "544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061") { echo "Installer verified"; } else { echo "Installer corrupt"; unlink("composer-setup.php"); } echo PHP_EOL;" php composer-setup.php php -r "unlink("composer-setup.php");"
更多查看:https://getcomposer.org/download/
2.使用 Packagist / Composer 中國全量鏡像加速
修改 composer 的全局配置文件(推薦方式)
composer config -g repo.packagist composer https://packagist.phpcomposer.com
更多查看:https://pkg.phpcomposer.com/
3.并行 composer install
composer global require hirak/prestissimo
下載如有神助?。。?/p> 創(chuàng)建 Laravel 項目
可以通過 Laravel 安裝工具:
composer global require "laravel/installer"
然后就可以使用 laravel new 命令安裝 Laravel 項目了,如:
laravel new blog
也可以通過 composer 創(chuàng)建:
composer create-project --prefer-dist laravel/laravel blog
構(gòu)建 php + apache 鏡像更多查看:https://d.laravel-china.org/docs/5.4/installation
1.選擇 DaoCloud 提供的 PHP 鏡像作為項目的基礎(chǔ)鏡像。
FROM daocloud.io/php:7.1.8-apache
2.更換 163 源:
#更新apt-get源 使用163的源 RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
3.通過安裝腳本安裝 Laravel 應(yīng)用所需要的 PHP 依賴。
# APT 自動安裝 PHP 相關(guān)的依賴包,如需其他依賴包在此添加 RUN apt-get update && apt-get install -y libmcrypt-dev libz-dev git wget libpcre3-dev # 官方 PHP 鏡像內(nèi)置命令,安裝 PHP 依賴 && docker-php-ext-install mcrypt mbstring pdo_mysql zip # 用完包管理器后安排打掃衛(wèi)生可以顯著的減少鏡像大小 && apt-get clean && apt-get autoclean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # 安裝 Composer,此物是 PHP 用來管理依賴關(guān)系的工具 && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # 國內(nèi)鏡像加速 && composer config -g repo.packagist composer https://packagist.phpcomposer.com && composer global require hirak/prestissimo
4.創(chuàng)建 Laravel 目錄結(jié)構(gòu):
# 開啟 URL 重寫模塊 # 配置默認(rèn)放置 App 的目錄 RUN a2enmod rewrite && mkdir -p /app && rm -fr /var/www/html && ln -s /app/public /var/www/html WORKDIR /app
5.加載 composer 依賴包
# 預(yù)先加載 Composer 包依賴,優(yōu)化 Docker 構(gòu)建鏡像的速度 COPY ./composer.json /app/ COPY ./composer.lock /app/ RUN composer install --no-autoloader --no-scripts
最終整個 Dockerfile 如下所示:
FROM daocloud.io/php:7.1.8-apache #更新apt-get源 使用163的源 RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list # APT 自動安裝 PHP 相關(guān)的依賴包,如需其他依賴包在此添加 RUN apt-get update && apt-get install -y libmcrypt-dev libz-dev git wget libpcre3-dev # 官方 PHP 鏡像內(nèi)置命令,安裝 PHP 依賴 && docker-php-ext-install mcrypt mbstring pdo_mysql zip # 用完包管理器后安排打掃衛(wèi)生可以顯著的減少鏡像大小 && apt-get clean && apt-get autoclean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # 安裝 Composer,此物是 PHP 用來管理依賴關(guān)系的工具 && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # 國內(nèi)鏡像加速 && composer config -g repo.packagist composer https://packagist.phpcomposer.com && composer global require hirak/prestissimo # 開啟 URL 重寫模塊 # 配置默認(rèn)放置 App 的目錄 RUN a2enmod rewrite && mkdir -p /app && rm -fr /var/www/html && ln -s /app/public /var/www/html WORKDIR /app # 預(yù)先加載 Composer 包依賴,優(yōu)化 Docker 構(gòu)建鏡像的速度 COPY ./composer.json /app/ COPY ./composer.lock /app/ RUN composer install --no-autoloader --no-scripts # 復(fù)制代碼到 App 目錄 COPY . /app # 執(zhí)行 Composer 自動加載和相關(guān)腳本 # 修改目錄權(quán)限 RUN composer install && chown -R www-data:www-data /app && chmod -R 0777 /app/storage
如果根據(jù)上一篇文章的寫法,修改.env 將數(shù)據(jù)庫指向上一篇所寫的 MySQL 容器,然后產(chǎn)生鏡像,最后創(chuàng)建容器,運(yùn)行起來,但這不是本文的目標(biāo),本文的目標(biāo)是利用「docker composer」來結(jié)合多個鏡像,配置 Laravel 環(huán)境。
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a Compose file to configure your application’s services. Then, using a single command, you create and start all the services from your configuration.
所以下一步需要編寫「docker-compose.yml」文檔
「docker-compose.yml」文檔直接看代碼了,容易理解
version: "3" services: app: build: . restart: always depends_on: - mysql ports: - "8000:80" networks: - app mysql: image: daocloud.io/mysql:latest volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: homestead MYSQL_USER: homestead MYSQL_PASSWORD: secret ports: - 8002:3306 networks: - app networks: app: volumes: db_data:
執(zhí)行構(gòu)建命令:
docker-compose up -d
執(zhí)行結(jié)果如下:
在瀏覽器輸入:http://localhost:8000,運(yùn)行如下:
總結(jié)這里還剩下一個小尾巴有待于各位去檢驗:創(chuàng)建了 MySQL 容器,但具體和 Laravel 項目怎么結(jié)合?
注:由于通過命令 laravel new 創(chuàng)建 blog 項目時,就已經(jīng)把 composer 依賴包下載回來了,由于大家的本地環(huán)境和 docker 環(huán)境不一致,所以我把 vendor 整個文件夾刪除了,這也好理解,因為我們和別人配合時,在版本庫中也不會有 vendor 依賴包文件夾的。
「docker-compose.yml」文檔寫法規(guī)則請聽下回分解
附:使用 MySQL 鏡像啟動一個 MySQL 實例非常簡單:
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=000000 -e MYSQL_DATABASE=yemeishu_database daocloud.io/mysql:latest
我們進(jìn)入該容器看看,是不是已經(jīng)創(chuàng)建了數(shù)據(jù)庫:yemeishu_database,以及是否設(shè)置了 root 的密碼為:000000。
如果使用數(shù)據(jù)庫客戶端,也可以看到創(chuàng)建的數(shù)據(jù)庫:yemeishu_database
感謝您能看到這了
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/27026.html
摘要:更換源更新源使用的源通過安裝腳本安裝應(yīng)用所需要的依賴。 showImg(https://segmentfault.com/img/remote/1460000011106825); 有了第二篇《使用 Docker 搭建簡易的 Java Web 環(huán)境 (二)》,懂了如何通過單一鏡像創(chuàng)建 Docker 環(huán)境,這篇主要學(xué)習(xí)如何使用「docker-compose」。目標(biāo)是:搭建 Laravel...
摘要:基于快速搭建服務(wù)根據(jù)自定義配置文件快速搭建環(huán)境。目錄此項目能做什么地址視頻教程包含軟件項目目錄結(jié)構(gòu)快速運(yùn)行運(yùn)行服務(wù)運(yùn)行項目運(yùn)行前端服務(wù)此項目能做什么搭建開發(fā)生產(chǎn)環(huán)境。搭建開發(fā)生產(chǎn)環(huán)境。 基于Docker快速搭建Web服務(wù) 根據(jù)自定義配置文件快速搭建Web環(huán)境。 目錄 此項目能做什么 GItHub地址、視頻教程 包含軟件 項目目錄結(jié)構(gòu) 快速運(yùn)行KFKDock 運(yùn)行PHP服務(wù) 運(yùn)行L...
摘要:基于快速搭建服務(wù)根據(jù)自定義配置文件快速搭建環(huán)境。目錄此項目能做什么地址視頻教程包含軟件項目目錄結(jié)構(gòu)快速運(yùn)行運(yùn)行服務(wù)運(yùn)行項目運(yùn)行前端服務(wù)此項目能做什么搭建開發(fā)生產(chǎn)環(huán)境。搭建開發(fā)生產(chǎn)環(huán)境。 基于Docker快速搭建Web服務(wù) 根據(jù)自定義配置文件快速搭建Web環(huán)境。 目錄 此項目能做什么 GItHub地址、視頻教程 包含軟件 項目目錄結(jié)構(gòu) 快速運(yùn)行KFKDock 運(yùn)行PHP服務(wù) 運(yùn)行L...
閱讀 1711·2021-11-11 10:58
閱讀 4184·2021-09-09 09:33
閱讀 1257·2021-08-18 10:23
閱讀 1548·2019-08-30 15:52
閱讀 1624·2019-08-30 11:06
閱讀 1867·2019-08-29 14:03
閱讀 1507·2019-08-26 14:06
閱讀 2943·2019-08-26 10:39