成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Docker快速搭建一套PHP、Nginx、MySQL、Redis、Xdebug、Memcached

Allen / 2185人閱讀

摘要:痛點(diǎn)如何簡(jiǎn)單迅速地初始化一個(gè)全新的開(kāi)發(fā)環(huán)境呢筆者在嘗試起一個(gè)新項(xiàng)目時(shí),往往會(huì)陷入重新建立一套環(huán)境的繁瑣事當(dāng)中。架構(gòu)本片文章搭建出來(lái)的環(huán)境如上圖。網(wǎng)絡(luò)這部分,為了便于配置就手動(dòng)分配了。配置開(kāi)啟記錄了一般性的查詢?nèi)罩?,便于程序?/p>

痛點(diǎn)
如何簡(jiǎn)單迅速地初始化一個(gè)全新的PHP開(kāi)發(fā)環(huán)境呢?

筆者在嘗試起一個(gè)新web項(xiàng)目時(shí),往往會(huì)陷入重新建立一套Docker環(huán)境的繁瑣事當(dāng)中。我想大家在開(kāi)始做一個(gè)新項(xiàng)目時(shí),或者快速為了和以前的項(xiàng)目做完全的隔離,也會(huì)起一套新docker環(huán)境。

從這篇文章你會(huì)得到

采用docker-compose容器編排技術(shù),一步啟動(dòng)全部服務(wù)。php容器在官方的基礎(chǔ)上還打包了一些常用拓展(附帶build源碼,動(dòng)手能力強(qiáng)可以自己打包),php,nginx,mysql都附帶有自定義配置文件(便于開(kāi)發(fā)測(cè)試的配置調(diào)整),都供下載。

架構(gòu)

本片文章搭建出來(lái)的環(huán)境如上圖。

環(huán)境說(shuō)明 運(yùn)行環(huán)境

Mac OS 10.13.6

Virtual Box 5.2.14

Ubuntu 16.04.4

Docker 17.07.0-ce

容器

Nginx 1.12.1-alpine

PHP-fpm 5.6

MySQL 5.7

Redis 3.2

Memcached 1.4.27

這里說(shuō)明一下筆者運(yùn)行環(huán)境,采用了在Mac機(jī)上安裝vbox虛擬機(jī),在虛擬機(jī)里面的debian環(huán)境安裝了Docker環(huán)境,文件放在Mac環(huán)境,通過(guò)文件掛載方式,達(dá)到Mac環(huán)境編輯,Docker環(huán)境實(shí)時(shí)更新效果。你要問(wèn)為啥不在Mac下直接裝Docker,歷史原因~
運(yùn)行材料
.
├── build                                   ## docker 鏡像build 材料
│?? ├── php5.6                              ## php 5.6
│?? │?? ├── Dockerfile
│?? │?? ├── imagick-3.4.3.tgz
│?? │?? ├── memcached-2.2.0.tgz
│?? │?? ├── redis-4.0.2.tgz
│?? │?? ├── sources.list
│?? │?? └── xdebug-XDEBUG_2_5_5.tar.gz
│?? └── php-cli                             ## php cli 的自建鏡像
│??     ├── amqp-1.9.3.tgz
│??     ├── Dockerfile
│??     ├── Dockerfile-php-swoole
│??     ├── memcached-3.0.4.tgz
│??     ├── redis-4.1.1.tgz
│??     ├── sources.list.jessie
│??     ├── swoole-4.0.4.tgz
│??     ├── swoole-4.2.6.tgz
│??     ├── xdebug-2.6.1.tgz
│??     └── yaf-3.0.7.tgz
├── config                                  ## 配置文件
│   ├── apt                                 ## 由于使用的debian系列,所以命名apt
│   │   └── sources.list                    ## 更新為國(guó)內(nèi)源
│   ├── memcached                           ## memchached的配置
│   │   └── memcached.conf
│   ├── mysql                            ## mysql 的配置
│?? │?? ├── conf.d
│?? │?? │?? └── mysqld_safe_syslog.cnf
│?? │?? └── my.cnf
│   ├── nginx                            ## nginx 的配置
│?? │?? ├── conf.d
│?? │?? │?? ├── default
│?? │?? │?? └── xiuno
│?? │?? ├── mime.types
│?? │?? ├── nginx.conf
│?? │?? └── sites-enabled
│   ├── php                            ## php的配置,分cli,和fpm配置
│?? │?? ├── cli
│?? │?? │?? ├── conf.d
│?? │?? │?? │?? ├── 05-opcache.ini
│?? │?? │?? │?? ├── 10-pdo.ini
│?? │?? │?? │?? ├── 20-curl.ini
│?? │?? │?? │?? ├── 20-gd.ini
│?? │?? │?? │?? ├── 20-imagick.ini
│?? │?? │?? │?? ├── 20-json.ini
│?? │?? │?? │?? ├── 20-memcache.ini
│?? │?? │?? │?? ├── 20-mysqli.ini
│?? │?? │?? │?? ├── 20-mysql.ini
│?? │?? │?? │?? ├── 20-pdo_mysql.ini
│?? │?? │?? │?? ├── 20-readline.ini
│?? │?? │?? │?? ├── 20-redis.ini
│?? │?? │?? │?? ├── 20-xdebug.ini
│?? │?? │?? │?? └── swoole.ini
│?? │?? │?? └── php.ini
│?? │?? ├── fpm
│?? │?? │?? ├── conf.d
│?? │?? │?? │?? ├── docker.conf
│?? │?? │?? │?? ├── www.conf
│?? │?? │?? │?? └── zz-docker.conf
│?? │?? │?? ├── docker-php-fpm.conf
│?? │?? │?? ├── php-fpm.conf
│?? │?? │?? ├── php.ini
│?? │?? │?? └── pool.d
│?? │?? │??     └── www.conf
│?? │?? └── mods-available
│?? │??     ├── curl.ini
│?? │??     ├── gd.ini
│?? │??     ├── imagick.ini
│?? │??     ├── json.ini
│?? │??     ├── memcache.ini
│?? │??     ├── mysqli.ini
│?? │??     ├── mysql.ini
│?? │??     ├── opcache.ini
│?? │??     ├── pdo.ini
│?? │??     ├── pdo_mysql.ini
│?? │??     ├── readline.ini
│?? │??     ├── redis.ini
│?? │??     └── xdebug.ini
│   └── redis                            ## redis 配置
│??     ├── redis.conf
│??     ├── redis-server.sh
│??     └── sentinel.conf
├── data                                ## 為了數(shù)據(jù)持久化
│   ├── mysql                            ## mysql 文件掛載
│   └── redis                            ## redis 持久化數(shù)據(jù)文件夾
├── docker-compose.yaml                 ## 容器編排 ?。。?├── log                                 ## 各個(gè)容器產(chǎn)生的日志
│   ├── mysql                            ## mysql日志
│   │   ├── error.log
│   │   └── mysql.log
│   ├── nginx                            ## nginx 日志
│?? │?? ├── access.log
│?? │?? ├── access_xiuno.log
│?? │?? ├── error.log
│?? │?? └── error_xiuno.log
│?? └── php
├── php                                    ## php代碼存放目錄
│   └── xiunobbs                            ## php項(xiàng)目
└── tool                                ## php 一些工具
    ├── composer.phar
    └── phpunit-4.8.36.phar
配置文件下載
git clone https://gitee.com/xupaul/docker_fast_init
配置說(shuō)明
目前筆者還沒(méi)有寫(xiě)相關(guān)自動(dòng)化腳本自動(dòng)適配用戶的使用環(huán)境,所以這里需要先調(diào)整一下下載后的配置文件。
docker-compose.yml 文件調(diào)整

這個(gè)文件有大量的文件掛載配置,這塊就需要調(diào)整,拿一個(gè)舉例。

version: "2"

services:

    http:
        image: nginx:1.12.1-alpine
        volumes:
            - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:rw
        ports:
            - "8080:80"
        environment: 
            TZ : "Asia/Shanghai"
        networks:
            tasker_net:
                ipv4_address: "192.63.0.11"

在例子中最后volumes的下一行,是將宿主機(jī)的nginx.conf配置文件掛載并覆蓋容器內(nèi)的nginx.conf文件,./文件路徑就是clone git項(xiàng)目后的目錄。

如果你也使用了vbox虛擬機(jī),那么你需要./要替換為docker的運(yùn)行環(huán)境的路徑!

ports這里,http服務(wù)為了不和本機(jī)的80端口沖突,以及sudo權(quán)限才能申請(qǐng)的小于1024的端口,這里我以8080作為默認(rèn)值。其他容器的端口配置也遵循以上的規(guī)則,為的是能一個(gè)命令就能啟動(dòng)起來(lái)。

為每個(gè)容器都配置了時(shí)區(qū)。

網(wǎng)絡(luò)ip這部分,為了便于配置就手動(dòng)分配ip了。

Nginx 配置

配置好了php-fpm之間tcp通訊,以及php路由的rewrite。配置了靜態(tài)資源緩存。

MySQL 配置

開(kāi)啟記錄了一般性的查詢?nèi)罩荆阌赿ebug程序。注意這里掛載的配置文件讀寫(xiě)權(quán)限要配置只讀!

PHP 配置
    php:
        image: paulxu/php:5.6-fpm-jessis-pdo-xdebug-mysqli-gd-mb-zip-2
        volumes:
            - ./config/php/cli/php.ini:/usr/local/etc/php/php.ini/:rw
        ports:
            - "9000"
        environment: 
            PHP_IDE_CONFIG: "serverName=bs"
            XDEBUG_CONFIG: "remote_host=10.0.2.2 remote_port=9000"

我為php一起打包了一些常用拓展,其中xdebug需要調(diào)整一下remote_host的的ip(docker-compose.yaml, ~/config/php/cli/20-xdebug.ini 兩個(gè)文件內(nèi)的都需要調(diào)整). server_name 需要結(jié)合開(kāi)發(fā)IDE一起調(diào)整,如PHPStorm里Preferences | Languages & Frameworks | PHP | Servers配置路徑下有什么可用的記錄,那么這里填什么。

Redis 配置

沒(méi)有特殊配置

Memecached 配置

沒(méi)有特殊配置

鏡像構(gòu)建 php鏡像

可以通過(guò)如下命令拉?。?/p>

docker pull paulxu/php:5.6-fpm-jessis-pdo-xdebug-mysqli-gd-mb-zip-2

或者在到 ~/build/php5.6 下自行打包:

docker build -t paulxu/php:5.6-fpm-jessis-pdo-xdebug-mysqli-gd-mb-zip-2 -f dockerfile .
如果自定義tag name,需要一并調(diào)整docker-compose.yml
啟動(dòng)

從gitee下載配置

根據(jù)自己的環(huán)境調(diào)整配置

準(zhǔn)備好鏡像,鏡像也可直接拉,我已上傳了官方了。

啟動(dòng)

啟動(dòng)命令
## 當(dāng)前線程運(yùn)行,要停止時(shí),鍵入`Ctrl+C`
docker-comose -f ./docker-compose.yaml up

## 后臺(tái)運(yùn)行
docker-comose -f ./docker-compose.yaml up -d
摧毀
docker-comose -f ./docker-compose.yaml down
常見(jiàn)問(wèn)題 MySQL 掛載的配置文件被忽略,不起作用

MySQL 要求配置文件的權(quán)限為只能讀,你需要已只讀方式掛載

不知道remote_host怎么辦

禁用xdebug,搭建好環(huán)境并啟動(dòng),在IDE運(yùn)行的環(huán)境(因?yàn)?b>xdebug需要和IDE通訊)訪問(wèn)以http(在瀏覽器訪問(wèn),注意端口映射)的方式訪問(wèn)php容器內(nèi)代碼,在Nginxaccess.log里查看訪問(wèn)的ip就是remote_host.

docker build 時(shí)報(bào)錯(cuò)導(dǎo)致打包鏡像失敗

遇到這種情況,如果時(shí)一些不要緊的報(bào)錯(cuò),可以選擇忽略他們。可以在命令后面追加 exit 0 來(lái)屏蔽錯(cuò)誤

最后

祝愿大家能一步到位,有問(wèn)題留言,遇到疑難雜可以試試本地起虛擬機(jī)里跑docker容器的那種方案。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40451.html

相關(guān)文章

  • Docker快速建一PHP、Nginx、MySQLRedis、XdebugMemcached

    摘要:痛點(diǎn)如何簡(jiǎn)單迅速地初始化一個(gè)全新的開(kāi)發(fā)環(huán)境呢筆者在嘗試起一個(gè)新項(xiàng)目時(shí),往往會(huì)陷入重新建立一套環(huán)境的繁瑣事當(dāng)中。架構(gòu)本片文章搭建出來(lái)的環(huán)境如上圖。網(wǎng)絡(luò)這部分,為了便于配置就手動(dòng)分配了。配置開(kāi)啟記錄了一般性的查詢?nèi)罩?,便于程序? 痛點(diǎn) 如何簡(jiǎn)單迅速地初始化一個(gè)全新的PHP開(kāi)發(fā)環(huán)境呢? 筆者在嘗試起一個(gè)新web項(xiàng)目時(shí),往往會(huì)陷入重新建立一套Docker環(huán)境的繁瑣事當(dāng)中。我想大家在開(kāi)始做一個(gè)新...

    kk_miles 評(píng)論0 收藏0
  • Docker快速建一PHP、NginxMySQL、Redis、XdebugMemcached

    摘要:痛點(diǎn)如何簡(jiǎn)單迅速地初始化一個(gè)全新的開(kāi)發(fā)環(huán)境呢筆者在嘗試起一個(gè)新項(xiàng)目時(shí),往往會(huì)陷入重新建立一套環(huán)境的繁瑣事當(dāng)中。架構(gòu)本片文章搭建出來(lái)的環(huán)境如上圖。網(wǎng)絡(luò)這部分,為了便于配置就手動(dòng)分配了。配置開(kāi)啟記錄了一般性的查詢?nèi)罩荆阌诔绦颉? 痛點(diǎn) 如何簡(jiǎn)單迅速地初始化一個(gè)全新的PHP開(kāi)發(fā)環(huán)境呢? 筆者在嘗試起一個(gè)新web項(xiàng)目時(shí),往往會(huì)陷入重新建立一套Docker環(huán)境的繁瑣事當(dāng)中。我想大家在開(kāi)始做一個(gè)新...

    Coding01 評(píng)論0 收藏0
  • 面向生產(chǎn)和開(kāi)發(fā)環(huán)境的LNP基礎(chǔ)鏡像

    摘要:地址這是一份適用于生產(chǎn)和開(kāi)發(fā)環(huán)境的。目前已經(jīng)在我司的生產(chǎn)環(huán)境上并運(yùn)行良好。日常開(kāi)發(fā)中也是基于此鏡像進(jìn)行的。如果想快速看看鏡像里有啥東西,只需要運(yùn)行其中替換成你實(shí)際的鏡像。開(kāi)發(fā)環(huán)境的使用單獨(dú)運(yùn)行這個(gè)容器是沒(méi)有意義的。 GITHUB地址:https://github.com/banyancheu... 這是一份適用于生產(chǎn)和開(kāi)發(fā)環(huán)境的 Dockerfile。 在 phuison/baseim...

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

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

0條評(píng)論

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