久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

第一次使用Docker構(gòu)建PHP7.4 + Swoole + Redis鏡像

 雨夜的博客 2021-04-20

Docker是一個用于開發(fā),,交付和運行應(yīng)用程序的開放平臺,。開發(fā)者可以利用Docker來快速交付,測試和部署代碼,,從而大大減少編寫代碼和在生產(chǎn)環(huán)境中運行代碼之間的差異,,尤其是在多人合作開發(fā)項目時保持開發(fā)和生產(chǎn)環(huán)境一致性有著很重要的意義。
Docker大家應(yīng)該很熟悉了,,Docker的安裝這里就直接省略了,,直接去 Docker官方 文檔安裝一下。
如何創(chuàng)建一個鏡像,,主要有兩種方法:1. 從現(xiàn)有的鏡像基礎(chǔ)上,,創(chuàng)建容器并自定義后Commit成鏡像;2. 利用Dockerfile,,根據(jù)自己的需要,,如同寫shell腳本一般,將自己需要搭建的容器環(huán)境所需的指令一條一條的匯集成指令集,,然后讓Docker根據(jù)Dockerfile來自動創(chuàng)建你想要的鏡像,。
本文在64位系統(tǒng)CentOS7.7上,并構(gòu)建一個PHP版本為7.4,,并帶有最新的Swoole和Redis擴展的自定義鏡像,,直接可以使用。本文演示時系統(tǒng)安裝的Docker版本是:

[root@localhost ~]# **docker** **—version****Docker** **version** 19.03.6-rc1, **build** 77739**a9875**12

準(zhǔn)備Dockerfile

Dockerfile 是一個用來構(gòu)建鏡像的文本文件,,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說明,。
默認的官方php docker鏡像是不帶redis和swoole擴展的,甚至連gd,、opcache,、pdo_mysql等擴展也要自己配置。以下是Dockerfile文件內(nèi)容:

*# 設(shè)置時區(qū)*ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

*# 更新安裝依賴包和PHP核心拓展*RUN apt-get update && apt-get install -y         —no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev curl \        && rm -r /var/lib/apt/lists/* \        && docker-php-ext-configure gd \        && docker-php-ext-install -j$(nproc) gd opcache pdo_mysql gettext sockets

*# 安裝 PECL 拓展,,安裝Redis,,swoole*RUN pecl install redis \    && pecl install swoole \    && docker-php-ext-enable redis swoole

*# 安裝 Composer*ENV COMPOSER_HOME /root/composer
RUN curl -sS https:///installer | php — —install-dir=/usr/local/bin —filename=composer
ENV PATH $COMPOSER_HOME/vendor/bin:$PATHWORKDIR /data12345678910111213141516171819202122

Dockerfile文件中使用了一些指令關(guān)鍵字,以下是簡要說明:

  • FROM 指定哪個鏡像作為你的基礎(chǔ)鏡像,,我們是以官方的php:7.4-fpm作為基礎(chǔ)鏡像

  • ENV 用于配置環(huán)境變量,,在其他指令中可以直接引用ENV設(shè)置的環(huán)境變量

  • RUN 執(zhí)行命令并創(chuàng)建新的Image Layer,看起來就跟shell命令一樣

  • WORKDIR 指定工作目錄,,如果使用docker exec進入容器時,,默認目錄就是指定的工作目錄,如/data
    Dockerfile文件還有很多指令,,如EXPOSE:暴露端口,,VOLUME:定義匿名卷,等等,有興趣的同學(xué)可以自行查找相關(guān)資料,,本文不做過多講解,。
    本文的Dockerfile文件除了安裝必要的PHP依賴包,我們還使用pecl安裝了redis和swoole,,設(shè)置了安裝Composer的命令,。
    注意了,使用pecl安裝的redis和swoole擴展,,不需要在php.ini中增加so擴展了,,使用docker-php-ext-enable即可啟用這些擴展。

構(gòu)建鏡像

保存好Dockerfile文件,,在同一目錄下執(zhí)行構(gòu)建鏡像的代碼:

**docker** **build** **-t** **hwphp**:7.4.2 .1

以上代碼構(gòu)建了一個名為hwphp,,標(biāo)簽版本號為7.4.2的PHP鏡像,注意在版本號后空格后還有一個點.,,表示當(dāng)前目錄,。此外在構(gòu)建時,執(zhí)行了apt-get update,,有可能網(wǎng)絡(luò)原因?qū)е赂聢?zhí)行特別慢,,因此可以將本地源設(shè)置為國內(nèi)如阿里云的鏡像更新升級。
執(zhí)行完build構(gòu)建代碼后,,如果回顯以下信息說明構(gòu)建成功,。

Removing intermediate container d00d6a4b2a21
**—>** 1c1cd84bbd3f
Successfully built 1c1cd84bbd3f
Successfully tagged hwphp:7.4-fpm1234

驗證鏡像

使用docker images查看鏡像:

[root@localhost ~]# **docker** **images****REPOSITORY**       **TAG**              **IMAGE** **ID**         **CREATED**          **SIZE**
**hwphp**            7.4-fpm          1**c1cd84bbd3f**     42 **hours** **ago**     443**MB**123

然后執(zhí)行命令啟動容器:

**docker** **run** **-d** **—name** **myhwphp-fpm** **hwphp**:7.4-fpm1

再執(zhí)行docker ps命令,可以看到容器已經(jīng)啟動并運行,。

[root@localhost ~]*# docker run -d —name myhwphp-fpm hwphp:7.4-fpm*9057a9da4b45ae634ba1b6d0d8e5f92886ca830c5d854eb96a97750a7b846c97[root@localhost ~]*# docker ps*CONTAINER ID    IMAGE       COMMAND     CREATED         STATUS           PORTS       NAMES
9057a9da4b45    hwphp:7.4-fpm “docker-php…” 8 seconds ago Up 7 seconds   9000/tcp    myhwphp-fpm12345

現(xiàn)在進入該容器:

docker **exec** -it myhwphp-fpm bash使用php -v查看下PHP版本信息:
root@9057a9da4b45:/data*# php -v*PHP 7.4.2 (cli) (built: Jan 24 2020 06:56:01) ( NTS )Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.2, Copyright (c), by Zend Technologies
使用php -m查看PHP擴展
…
**PDO**
**pdo_mysql**
**pdo_sqlite**
**Phar**
**posix**
**readline**
**redis**
**Reflection**
**session**
**SimpleXML**
**sockets**
**sodium**
**SPL**
**sqlite3**
**standard**
**swoole**
**tokenizer**
**xml**
**xmlreader**
**xmlwriter**
**Zend** **OPcache**
**zlib**[Zend Modules]**Zend** **OPcache**12345678910111213141516171819202122232425262728293031323334

我們可以看到redis,,swoole,pdo等擴展已經(jīng)啟用,。
你可以使用php —ri swoole查看swoole的相關(guān)信息:

root@9057a9da4b45:/data*# php —ri swoole*swoole

Swoole => enabled
Author => Swoole Team <[email protected]>Version => 4.4.15
Built => Feb  1 2020 21:28:3712345678

現(xiàn)在我們就可以像其他容器一樣使用自定義PHP鏡像下的容器了,。
附:常用的Docker命令

#1.顯示所有容器
docker ps -a[包括未運行] -q[僅顯示編號]
#2.停止、重啟,、啟動某一容器
docker stop|restart|start 容器id|容器名 
#3.停止,、重啟、啟動所有容器
docker stop|restart|start $(docker ps -a -q)
#4.獲取容器
ipdocker inspect 容器id 
#5.容器開機啟動
 docker update --restart=always $(docker ps -a -q)
#6.刪除容器[需要先停止運行]
 docker rm 容器id|容器名 
#7.刪除鏡像[需要先停止且刪除所有關(guān)聯(lián)的容器]
 docker rmi 鏡像id 
#8.進入容器
 docker exec -it 容器id|容器名 bash
#9.搜索鏡像
 docker search 鏡像關(guān)鍵字 
#10.下載鏡像
docker pull 鏡像名字:版本號
#11.查看本機所有docker鏡像
docker images
#12.導(dǎo)出鏡像
docker save -o 導(dǎo)出的鏡像文件.tar 鏡像名字:版本號
#13.導(dǎo)入鏡像
docker load -i 鏡像文件.tar
#14.從容器里面拷文件到宿主機
docker cp 容器名:要拷貝的文件在容器里面的路徑   要拷貝到宿主機的相應(yīng)路徑 
#如:docker cp myphp:/home/data/test/js/test.js /opt
#15.從宿主機拷文件到容器里面docker cp 要拷貝的文件路徑 容器名:要拷貝到容器里面對應(yīng)的路徑#如:docker cp /opt/test.js myphp:/home/data/test/js

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多