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

資訊專欄INFORMATION COLUMN

面向生產(chǎn)和開發(fā)環(huán)境的LNP基礎(chǔ)鏡像

sshe / 2120人閱讀

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

GITHUB地址:https://github.com/banyancheu...

這是一份適用于生產(chǎn)和開發(fā)環(huán)境的 Dockerfile。 在 phuison/baseimage 的基礎(chǔ)上,增加了php、php擴(kuò)展和nginx的安裝腳本, 實(shí)現(xiàn)了一鍵安裝LNP及其常用擴(kuò)展的功能。目前已經(jīng)在我司的生產(chǎn)環(huán)境上并運(yùn)行良好。日常開發(fā)中也是基于此鏡像進(jìn)行的。

鏡像內(nèi)容

此鏡像包括如下內(nèi)容:

Ubuntu 16.04 LTS

correct init process

syslog-ng

logrotate

SSH server

cron

runit

setuser

install_clean

以上這部分內(nèi)容請移步到 這里 查看注釋。

re2c-1.0.3

php 7.1.18

php-swoole-2.2.0

php-yaml-2.0.2

php-mongodb-1.4.2

php-redis-4.0.1

php-imagick-3.4.3

php-xdebug-2.6.0

php-igbinary-2.0.5

php-memcached-3.0.4

php-yac-2.0.2

php-inotify-2.0.0

hiredis-0.13.3

libmemcached-1.0.18

ImageMagick

nginx-1.12.2

以上安裝腳本分別在 build/php_7.1.18.shbuild/nginx_1.12.2.sh 中。

APT這塊使用了清華大學(xué)的ubuntu安裝源。 此部分代碼可在 build/prepare.sh 中找到。

安裝與運(yùn)行

使用基于docker的開發(fā)和生產(chǎn)環(huán)境需要你有基礎(chǔ)的docker知識(shí)。這里假設(shè)你已經(jīng)了解鏡像,容器,以及容器編排的一些概念并且實(shí)際使用過。

構(gòu)建

git clone 此倉庫,在 Dockerfile 所在的目錄執(zhí)行命令:

docker build -t="[ImageName]:[Tag]" .    // [ImageName] 為你想要的鏡像名稱,如果不想標(biāo)識(shí)版本,請忽略:[Tag]。但是別忽略了"."

然后等待構(gòu)建成功即可。整個(gè)安裝過程約10-15分鐘,取決于你當(dāng)前所在的網(wǎng)絡(luò)環(huán)境。

在線倉庫

如果不想構(gòu)建,也可以使用我已經(jīng)打包好的在線倉庫。

docker pull ccr.ccs.tencentyun.com/qyy-base/qyy-php:1.1.0
運(yùn)行

通過構(gòu)建或者在線拉取鏡像到本地后,使用 docker images 查看該鏡像信息。整個(gè)鏡像大小為957MB,運(yùn)行時(shí)占用內(nèi)存約300M。

如果想快速看看鏡像里有啥東西,只需要運(yùn)行:

docker run --rm -it [ImageID] /sbin/my_init -- bash -l  // 其中ImageID替換成你實(shí)際的鏡像ID。

該命令創(chuàng)建容器并啟動(dòng)了shell,進(jìn)入交互模式。請注意:鏡像里面并沒有運(yùn)行任何我們想要的服務(wù)(如php和nginx),只是啟動(dòng)了系統(tǒng)并執(zhí)行了系統(tǒng)的初始化流程。

開發(fā)環(huán)境的使用

多帶帶運(yùn)行這個(gè)容器是沒有意義的。因?yàn)檫@里面沒有任何你的業(yè)務(wù)代碼,也沒有任何我們想要的服務(wù)。

下面來看看如何運(yùn)用在開發(fā)環(huán)境中:

一個(gè)完整的開發(fā)環(huán)境應(yīng)當(dāng)包含數(shù)據(jù)庫、緩存與web服務(wù)。該鏡像已經(jīng)包含了nginx,所以我們只需要把其他的服務(wù)跑起來即可。這里使用到了 docker-compose 把該鏡像與其他服務(wù)鏈接起來并運(yùn)行.

我們應(yīng)該有一個(gè)目錄專門放這些配置文件,假設(shè)有個(gè)目錄叫 docker-dev,它的目錄結(jié)構(gòu)大概是這個(gè)樣子:

docker-dev            部署目錄
├─mysql               數(shù)據(jù)庫配置目錄
│  ├─my.cnf           公共模塊目錄(可更改)
│  ├─conf.d           模塊目錄(可更改)
│  │  ├─my5.6.cnf     模塊配置文件
│  │  ├─mysqld_safe_syslog.cnf  模塊函數(shù)文件
│  │  └─ ...          更多類庫目錄
├─nginx               Nginx配置目錄
│  ├─nginx.conf       要覆蓋的nginx.conf
├─php                 PHP配置目錄
│  ├─php-fpm.conf       要覆蓋的php-fpm conf
│  ├─php-fpm.ini       要覆蓋的php-fpm.ini
│  ├─php.d            擴(kuò)展配置目錄
│  │  ├─xdebug.ini    要啟用 Xdebug,在該ini文件里填入 `zend_extension=xdebug.so`
├─redis               緩存配置目錄    
│  ├─redis.conf       要覆蓋的redis.conf
├─docker-compose.yml  docker-compose 編排文件
├─game.sh               業(yè)務(wù)啟動(dòng)腳本
├─game.conf             業(yè)務(wù)的web配置

假設(shè)我的業(yè)務(wù)代碼在 /d/WWW/gamer/game ,是一個(gè)基于yii2的php項(xiàng)目。

先來看 docker-compose.yml,注意看注釋:

version: "2"
services:
  php:
    restart: always
    image: ccr.ccs.tencentyun.com/qyy-base/qyy-php:1.1.0
    container_name: game
    volumes:
    - /d/WWW/gamer/game:/home/worker/data/www/game  # 將宿主機(jī)的代碼目錄映射到容器的www目錄
    # ... 如果有更多的開發(fā)中業(yè)務(wù)代碼,一并放到這里并映射到容器 
    - ./php/php-fpm.ini:/home/worker/php/etc/php-fpm.ini # 用開發(fā)配置覆蓋容器里的fpm配置
    - ./php/php-fpm.conf:/home/worker/php/etc/php-fpm.conf # 同上
    - ./php/php.d/xdebug.ini:/home/worker/php/etc/php.d/xdebug.ini # 開發(fā)環(huán)境開啟xdebug。
    - ./nginx/nginx.conf:/home/worker/nginx/conf/nginx.conf # 用開發(fā)配置覆蓋容器里的nginx配置文件
    - ./game.conf:/home/worker/nginx/conf.d/game.conf  # 業(yè)務(wù)的nginx配置。
    - ./game.sh:/etc/my_init.d/game.sh # 業(yè)務(wù)的啟動(dòng)配置,一般是啟動(dòng)php-fpm和nginx,也可以按需寫其他執(zhí)行腳本
    # 如果有更多的業(yè)務(wù)需要自定義腳本或者web,在這里添加
    ports:
      - "80:80" 
    networks:
      - new
    depends_on:
      - redis
      - memcached
      - mysql
    extra_hosts:
      - "gameapi.cc:192.168.1.9" # 將一個(gè)用于開發(fā)的虛擬域名指向到宿主機(jī)的IP。
  redis:
    restart: always
    image:  registry.cn-hangzhou.aliyuncs.com/qyyteam/redis:1.0.0
    ports:
      - "6379:6379"
    volumes:
      - /d/persistent/redis:/data # 左邊的目錄是我宿主機(jī)上的持久化redis存儲(chǔ)目錄,這里換成自己的。
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf # 用開發(fā)配置覆蓋redis容器里的配置
    networks:
      - new 
    container_name: redis
  memcached:
    restart: always
    image: registry.cn-hangzhou.aliyuncs.com/qyyteam/memcached:1.0.0
    ports:
      - "11211:11211"
    networks:
      - new 
    container_name: memcached
  mysql:
    image: registry.cn-hangzhou.aliyuncs.com/qyyteam/mysql:5.6
    restart: always
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/my.cnf:/etc/mysql/my.cnf
      - ./mysql/conf.d:/etc/mysql/conf.d
      - /d/server/MySql/data:/var/lib/mysql 
      # 左邊的目錄是我宿主機(jī)上的持久化Mysql存儲(chǔ)目錄,這里換成一個(gè)全新的或者已經(jīng)存在的數(shù)據(jù)庫目錄。 
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_USER=root
      - MYSQL_PASSWORD=root
    networks:
      - new 
    container_name: mysql
networks:
    new:

如上所示,我們有php+nginx服務(wù),redis服務(wù)、memcached服務(wù),mysql服務(wù)。這些服務(wù)被編排在一起,合成了一個(gè)完整的開發(fā)環(huán)境。(當(dāng)然如果你的技術(shù)棧不是這樣或者版本不對,可以換成自己的。這需要你有點(diǎn)動(dòng)手能力:) )

再來看一下 game.sh :

#!/bin/sh
set -e
mkdir -p /home/worker/data/php/logs/xdebug
# start nginx,php-fpm
setuser worker /home/worker/php/sbin/php-fpm -c /home/worker/php/etc/php-fpm.ini
/home/worker/nginx/sbin/nginx

在docker-compose.yml文件里,它被映射到了 /etc/my_init.d/ 目錄。在啟動(dòng)容器的時(shí)候該目錄下的shell文件會(huì)按文件名順序執(zhí)行。
該腳本初始化了一個(gè)目錄,并且啟動(dòng)了 php-fpmnginx 用于接收訪問。

最后在docker-compose.yml所在的目錄中,命令輸入:

docker-compose -p dev up -d

便啟動(dòng)了所有服務(wù)。就是這么簡單!最重要的是,它是一個(gè)統(tǒng)一的、可維護(hù)的、可在團(tuán)隊(duì)內(nèi)普及推廣的開發(fā)環(huán)境!

PS:這個(gè)例子的所有代碼會(huì)在 example/docker-game-dev 中。

請注意:根據(jù)自己實(shí)際需要,修改docker-compose.yml或其他服務(wù)如Mysql,redis的配置項(xiàng),這只是一個(gè)例子,千萬不要復(fù)制粘貼直接用。

生產(chǎn)環(huán)境的使用

其實(shí)如果是小公司,業(yè)務(wù)量不大并且是單機(jī)的話,上面的方法里只需要將配置變量改成生產(chǎn)環(huán)境的就能直接用。

但如果:

是分布式應(yīng)用

使用了容器服務(wù)(Kubernetes或者swarm)

有CI && CD的需求

就必須把你的業(yè)務(wù)代碼打包成一個(gè)鏡像了。還是假設(shè)項(xiàng)目目錄為 /d/WWW/gamer/www, 在該目錄下新建一個(gè) Dockerfile :

FROM ccr.ccs.tencentyun.com/qyy-base/qyy-php:1.1.0
MAINTAINER banyan.cheung@gmail.com

# source codes
RUN mkdir -p /home/worker/data/www/game
COPY . /home/worker/data/www/game

# startup scripts
COPY docker/game.sh /etc/my_init.d/game.sh
RUN chmod +x /etc/my_init.d/game.sh

# php-fpm configs
COPY docker/php-fpm.ini /home/worker/php/etc/php-fpm.ini
COPY docker/php-fpm.conf /home/worker/php/etc/php-fpm.conf

# logrotate
COPY docker/nginx /etc/logrotate.d/nginx
COPY docker/php-fpm /etc/logrotate.d/php-fpm
RUN chmod 644 /etc/logrotate.d/nginx
RUN chmod 644 /etc/logrotate.d/php-fpm

EXPOSE 80

這個(gè)Dockerfile繼承了基礎(chǔ)鏡像,還做了它獨(dú)有的其他事情:

將代碼Copy進(jìn)了鏡像里的www目錄

新增了啟動(dòng)腳本,替換了原有的php-fpm和ini配置

配置了 logrotate 每隔一段時(shí)間分割nginx和php產(chǎn)生的日志文件

相信你已經(jīng)舉一反三了————每一個(gè)獨(dú)立的業(yè)務(wù)代碼都應(yīng)該像這樣構(gòu)建屬于自己的鏡像。構(gòu)建成功后,就能方便的進(jìn)行分布式部署和CI && CD了。

一些文件及路徑的位置

雖然我已經(jīng)盡可能考慮到各種情況,但是每個(gè)公司每個(gè)團(tuán)隊(duì)的情況都不一樣,適用我的不一定適用于你。這里我列出一些在鏡像里你可能需要了解的地方,以方便你進(jìn)行定制:

/home/worker/data 目錄是數(shù)據(jù)目錄,這里面放一些諸如你的代碼、日志的東東。

/home/worker/data/www 是固定的web目錄。當(dāng)然你可以在 config/php/etc/php-fpm.ini 中修改它。

下面是一些固定的文件路徑:

/home/worker/data/php/logs/php_errors.log php的錯(cuò)誤日志

/home/worker/data/php/logs/opcache_errors.log opcache 錯(cuò)誤日志

/home/worker/data/php/run/php-fpm.pid php pid 地址。

/home/worker/data/php/logs/php-fpm.log php-fpm 日志。

/home/worker/data/php/logs/www.access.log access log

以上這些都可以在 config/php/etc/php-fpm.ini 和 config/php/etc/php-fpm.conf 中修改。

php 安裝在 /home/worker/php 中。打開它你會(huì)發(fā)現(xiàn)熟悉的php安裝目錄。
nginx 安裝在 /home/worker/nginx 中。conf目錄是 /home/worker/nginx/conf.d/

如果需要使用 logrotate , 請寫一個(gè)配置文件在Dockerfile里COPY到 /etc/logrotate.d/,并將權(quán)限修改為644。這里是一個(gè)例子:

/etc/logrotate.d/nginx

/home/worker/data/nginx/logs/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    dateext
    postrotate
        if [ -f /home/worker/data/nginx/logs/nginx.pid ]; then
                kill -USR1 `cat /home/worker/data/nginx/logs/nginx.pid`
        fi
    endscript
}

定時(shí)任務(wù)可以寫shell放在 /etc/cron.hourly/,/etc/cron.daily/,/etc/cron.weekly/等文件夾中,系統(tǒng)會(huì)根據(jù)時(shí)間自動(dòng)執(zhí)行。 cat /etc/crontab 可以看到系統(tǒng)自帶的定時(shí)任務(wù)設(shè)置。

如果能幫到你,請到github給我一顆小星星,謝謝 :)

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40000.html

相關(guān)文章

  • 面向生產(chǎn)開發(fā)環(huán)境LNP基礎(chǔ)鏡像

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

    wangzy2019 評(píng)論0 收藏0
  • URLOS應(yīng)用開發(fā)基礎(chǔ)課——Docker基礎(chǔ)鏡像Alpine入門教程

    摘要:我們在進(jìn)行應(yīng)用開發(fā)時(shí),經(jīng)常會(huì)用到一些基礎(chǔ)系統(tǒng)鏡像,如等,我們可以通過命令直接拉取官方鏡像。目前官方已開始推薦使用替代之前的做為基礎(chǔ)鏡像環(huán)境。適合容器使用由于小巧功能完備,非常適合作為容器的基礎(chǔ)鏡像。 我們在進(jìn)行URLOS應(yīng)用開發(fā)時(shí),經(jīng)常會(huì)用到一些基礎(chǔ)系統(tǒng)鏡像,如:ubuntu、CentOS、Debian等,我們可以通過docker pull命令直接拉取官方鏡像。 root@ubuntu...

    Jrain 評(píng)論0 收藏0
  • URLOS應(yīng)用開發(fā)基礎(chǔ)課——Docker基礎(chǔ)鏡像Alpine入門教程

    摘要:我們在進(jìn)行應(yīng)用開發(fā)時(shí),經(jīng)常會(huì)用到一些基礎(chǔ)系統(tǒng)鏡像,如等,我們可以通過命令直接拉取官方鏡像。目前官方已開始推薦使用替代之前的做為基礎(chǔ)鏡像環(huán)境。適合容器使用由于小巧功能完備,非常適合作為容器的基礎(chǔ)鏡像。 我們在進(jìn)行URLOS應(yīng)用開發(fā)時(shí),經(jīng)常會(huì)用到一些基礎(chǔ)系統(tǒng)鏡像,如:ubuntu、CentOS、Debian等,我們可以通過docker pull命令直接拉取官方鏡像。 root@ubuntu...

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

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

0條評(píng)論

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