国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【docker實(shí)操】使用docker部署一個(gè)laravel應(yīng)用

SunZhaopeng / 1535人閱讀

摘要:最近部署上線一個(gè)項(xiàng)目,新的服務(wù)器,在生產(chǎn)環(huán)境安裝配置等各種東西一大堆很麻煩。本文是我學(xué)習(xí)并使用部署項(xiàng)目的一個(gè)記錄。另外我們可以部署不同版本的應(yīng)用,例如,并且互不干擾。之后部署只需要移植鏡像生成容器,就能保證環(huán)境的一致。需要使用三個(gè)鏡像。

最近部署上線一個(gè)項(xiàng)目,新的服務(wù)器,在生產(chǎn)環(huán)境安裝配置nginx、php、mysql、git、composer等各種東西一大堆很麻煩。docker已經(jīng)火了一段時(shí)間,已經(jīng)成了后端和運(yùn)維的必備技能,之前老大也說要嘗試下,于是就來體驗(yàn)一下docker的魅力。本文是我學(xué)習(xí)并使用docker部署項(xiàng)目的一個(gè)記錄。

docker優(yōu)勢(shì)

docker的主要優(yōu)勢(shì)可以總結(jié)為:一次構(gòu)建,到處部署。當(dāng)我們使用docker構(gòu)建好項(xiàng)目后,在開發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境都可以使用統(tǒng)一的鏡像來部署,保證了環(huán)境的一致。并且docker支持linux、mac os、windows三大平臺(tái),代碼運(yùn)行在容器中,不受外部操作系統(tǒng)的影響,只和你的鏡像有依賴關(guān)系。

另外我們可以部署不同版本的應(yīng)用,例如mysql5.5、mysql5.7,并且互不干擾。

操作思路

關(guān)于docker的安裝和相關(guān)概念在此都不贅述了,網(wǎng)上有很多資料,說下具體實(shí)施的思路。

正確的使用方式不是項(xiàng)目完成后才開始構(gòu)建docker鏡像,而是項(xiàng)目架構(gòu)、依賴、環(huán)境確定了之后就構(gòu)建和配置好docker鏡像,之后代碼的開發(fā)和運(yùn)行都在容器之中。之后部署只需要移植鏡像生成容器,就能保證環(huán)境的一致。

我這個(gè)項(xiàng)目很簡(jiǎn)單,只用到nginx、php、mysql這三件套,nginx使用php-fpm作為cgi解析器。需要使用三個(gè)鏡像:nginx、php-fpm、mysql。為什么要用三個(gè)鏡像而不是把這三個(gè)集成到一個(gè)大鏡像中?這是docker推薦的做法,鏡像之間盡量解耦,方便復(fù)用,避免臃腫的鏡像,容器間通過網(wǎng)絡(luò)連接起來。

官方提供了很多優(yōu)質(zhì)鏡像,我們只需要挑選并基于官方鏡像來配置就好。

構(gòu)建鏡像

完整文件詳見我的github

nginx鏡像

DockerFile:

FROM nginx:1.10

ADD nginx.conf /etc/nginx/nginx.conf
ADD site.conf /etc/nginx/conf.d/
ADD mkdir.sh /opt/

RUN chmod +x /opt/mkdir.sh && /opt/mkdir.sh

將基本配置和站點(diǎn)配置復(fù)制進(jìn)去,用shell腳步來創(chuàng)建好log文件夾

php-fpm鏡像

DockerFile:

FROM php:7.0-fpm

ADD apt-list /opt/

RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak  
    && cat /opt/apt-list > /etc/apt/sources.list  
    && apt-get update  
    && apt-get install -y 
        libfreetype6-dev 
        libjpeg62-turbo-dev 
        libmcrypt-dev 
        libpng-dev

RUN docker-php-ext-install -j$(nproc) iconv mcrypt 
        && 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 pdo_mysql 
       && docker-php-ext-install zip
        
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer 
        && composer config -g repo.packagist composer https://packagist.phpcomposer.com 

php鏡像的是最麻煩的,要裝系統(tǒng)依賴,php擴(kuò)展,composer,還要設(shè)置環(huán)境變量。php擴(kuò)展那塊參考官方鏡像dockr-hub-php

使用了apt,所以我們要修改apt源,官方php鏡像是基于debian的,不是ubuntu的源。

dockerfile一個(gè)run建一層,這里建議apt install作為一層,安裝php擴(kuò)展作為一層,而不是都放在一層。這樣的好處就是如果第二層php擴(kuò)展裝失敗了,不用再跑一遍apt install。最后一層我們裝上composer。

為了讓php版本一致,我們應(yīng)該調(diào)用php容器內(nèi)的php作為cli:
docker run -it -v $PWD:/opt/code -w /opt/code my-php php -v

命令太長(zhǎng)了,我們可以做個(gè)alias,在~/.bash_aliases中加入一行(注意最后空格):
alias myphp="docker run -it -v $PWD:/opt/code -w /opt/code --rm my-php "

我們?cè)趛ourpath/opt/code下創(chuàng)建laravel應(yīng)用,修改權(quán)限,注意在宿主機(jī)將你加入www-data group:

cd ~/docker-php/opt/code
myphp composer create-project --prefer-dist laravel/laravel .
sudo chown -R www-data:www-data . && sudo chmod -R 775 .
mysql鏡像

DockerFile:

FROM mysql:5.7

mysql最簡(jiǎn)單,直接用官方的就行了

docker-compose啟動(dòng)容器

我們現(xiàn)在有三個(gè)鏡像,如果一個(gè)個(gè)啟動(dòng)、連接、掛載很麻煩,官方提供了docker-compose工具,將配置寫在一起,一鍵啟動(dòng)。

docker-compose.yml:

nginx:
    build: ./nginx
    ports:
      - "80:80"
    links:
      - "php"
    volumes:
      - ~/docker-php/opt:/opt

php:
    build: ./php
    ports:
      - "9000:9000"
    links:
      - "mysql"
    volumes:
      - ~/docker-php/opt:/opt

mysql:
    build: ./mysql
    ports:
      - "3306:3306"
    volumes:
      - ~/docker-php/opt/data/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456

使用docker-compose up命令啟動(dòng)容器組:

啟動(dòng)訪問 yourhost:80 可以看到熟悉的laravel歡迎頁(yè)面:

進(jìn)入mysql容器建個(gè)數(shù)據(jù)庫(kù)建個(gè)表測(cè)試一下數(shù)據(jù)庫(kù)連接:
docker exec -it dockerphp_mysql_1 bash

修改yourpath/opt/code/routes:

測(cè)試了一下報(bào)錯(cuò):
SQLSTATE[HY000] [2002] Connection refused

google了一下,修改一下.env,把db_host改為你的ip:
DB_HOST=127.0.0.1 -> DB_HOST=yourhost

訪問/mysql,頁(yè)面輸出,大功告成:

Reference:

docker入門到實(shí)踐

Docker在PHP項(xiàng)目開發(fā)環(huán)境中的應(yīng)用

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28184.html

相關(guān)文章

  • docker實(shí)操使用docker部署一個(gè)laravel應(yīng)用

    摘要:最近部署上線一個(gè)項(xiàng)目,新的服務(wù)器,在生產(chǎn)環(huán)境安裝配置等各種東西一大堆很麻煩。本文是我學(xué)習(xí)并使用部署項(xiàng)目的一個(gè)記錄。另外我們可以部署不同版本的應(yīng)用,例如,并且互不干擾。之后部署只需要移植鏡像生成容器,就能保證環(huán)境的一致。需要使用三個(gè)鏡像。 最近部署上線一個(gè)項(xiàng)目,新的服務(wù)器,在生產(chǎn)環(huán)境安裝配置nginx、php、mysql、git、composer等各種東西一大堆很麻煩。docker已經(jīng)火...

    quietin 評(píng)論0 收藏0
  • Laravel 教程 - 實(shí)戰(zhàn) iBrand 開源電商 API 系統(tǒng)

    摘要:最佳實(shí)踐良好的編碼規(guī)范單元測(cè)試持續(xù)集成文檔,從一開始就形成良好的編碼習(xí)慣。真實(shí)的電商業(yè)務(wù)所有的業(yè)務(wù)需求來自真實(shí)的客戶,并且線上良好運(yùn)營(yíng)中。 重要通知: Laravel + 小程序的開源電商版本源碼已經(jīng)在 github 上拉,歡迎提交 issue 和 star :) 開源電商 Server 端: Laravel API源碼 開源電商 client 端:小程序源碼 iBrand 簡(jiǎn)介...

    iOS122 評(píng)論0 收藏0
  • 使用 Kubernetes 來部署你的 Laravel 程序

    摘要:有些人將其稱為容器編排平臺(tái),而并非唯一的此類平臺(tái)。但是在中,您可以快速擴(kuò)展出多個(gè)實(shí)例你看看使用擴(kuò)展你的網(wǎng)站是何其便捷。當(dāng)你指向群集的地址和節(jié)點(diǎn)的端口號(hào)時(shí),你就已經(jīng)可見瀏覽器中正在運(yùn)行的程序了。 showImg(https://segmentfault.com/img/remote/1460000017838786?w=1120&h=757); Laravel 是開發(fā) PHP 應(yīng)用程序的...

    JowayYoung 評(píng)論0 收藏0
  • 利用 Docker 包 Laradock 服務(wù)器部署 Laravel & ThinkSNS+

    摘要:能跑應(yīng)用就不錯(cuò)了,周六想在服務(wù)器用試試部署開發(fā)環(huán)境。官網(wǎng)內(nèi)測(cè)申請(qǐng)方式提供個(gè)人企業(yè)聯(lián)系方式及認(rèn)證信息實(shí)名企業(yè)營(yíng)業(yè)執(zhí)照照片或掃描件及申請(qǐng)說明,發(fā)送郵件至即可獲得內(nèi)測(cè)資格,申請(qǐng)從速。 前段時(shí)間不知道抽上面瘋,買了一臺(tái)低配的 ECS,配置就是 1m1u。能跑應(yīng)用就不錯(cuò)了,周六想在服務(wù)器用 Laradock 試試部署開發(fā)環(huán)境。 安裝 Docker 因?yàn)槲业南到y(tǒng)是 CentOS 7 并且對(duì)比 Do...

    idisfkj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<