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

資訊專欄INFORMATION COLUMN

【Docker實戰之入門】Dockerfile詳細分析:構建docker鏡像(2)中間件鏡像

susheng / 3060人閱讀

摘要:構建鏡像時,首先要有一個基礎鏡像,然后有中間件鏡像,最后生成一個應用鏡像。現在作為基礎鏡像,下面來構建兩個中間件鏡像鏡像具有和能力的鏡像。同時,用文件覆蓋默認的配置文件。構建鏡像查看鏡像以上鏡像已經做好了。

以上已經構建好了一個基礎的docker鏡像centos7

構建docker鏡像時,首先 要有一個基礎鏡像,然后有中間件鏡像,最后生成一個應用鏡像

現在centos7作為基礎鏡像,下面來構建兩個中間件鏡像:DB鏡像、具有PHP和Nginx能力的鏡像。

php-fpm

文件目錄如下

[root@Optimus docker-training]# ls
centos7  mysql  php-fpm  README.md  wordpress
[root@Optimus docker-training]# cd php-fpm/
[root@Optimus php-fpm]# ls
Dockerfile  nginx_default.conf  nginx_nginx.conf  php_www.conf  supervisor_nginx.conf  supervisor_php-fpm.conf

[supervisor_php-fpm.conf] 用于啟動php-fpm.
[supervisor_nginx.conf] 用于啟動Nginx服務。

Dockerfile

[root@Optimus php-fpm]#  vim Dockerfile 

#
# MAINTAINER        Carson,C.J.Zeong 
# DOCKER-VERSION    1.6.2
#
# Dockerizing php-fpm: Dockerfile for building php-fpm images
#
FROM       csphere/centos:7.1
MAINTAINER Carson,C.J.Zeong 

# Set environment variable
ENV     APP_DIR /app

RUN     yum -y swap -- remove fakesystemd -- install systemd systemd-libs && 
      yum -y install nginx php-cli php-mysql php-pear php-ldap php-mbstring php-soap php-dom php-gd php-xmlrpc php-fpm php-mcrypt && 
      yum clean all

ADD nginx_nginx.conf /etc/nginx/nginx.conf
ADD     nginx_default.conf /etc/nginx/conf.d/default.conf

ADD     php_www.conf /etc/php-fpm.d/www.conf
RUN     sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php.ini

RUN     mkdir -p /app && echo "" > ${APP_DIR}/info.php

EXPOSE  80 443

ADD     supervisor_nginx.conf /etc/supervisor.conf.d/nginx.conf
ADD     supervisor_php-fpm.conf /etc/supervisor.conf.d/php-fpm.conf

ONBUILD ADD . /app
ONBUILD RUN chown -R nginx:nginx /app

[FROM csphere/centos:7.1] 基于cento:7.1作為基礎鏡像(父鏡像)。

[MAINTAINER] 說明dockerfile由誰來維護

[ENV APP_DIR /app]設置了一個APP_DIR變量,文件目錄為/app.(因為后面對Nginx做了一些修改。修改了Nginx的網站根目錄,改為了/app。同時,用nginx_default.conf文件覆蓋默認的配置文件/etc/nginx/conf.d/default.conf)。

[RUN yum -y install nginx php-cli php-mysql php-pear php-ldap php-mbstring php-soap php-dom php-gd php-xmlrpc php-fpm php-mcrypt] 主要安裝了Nginx、php-mysql、php-fpm以及其他php的拓展包。

[ADD php_www.conf /etc/php-fpm.d/www.conf] 在之前安裝php和Apache的時候,里面的用戶是Apache,今天用的是Nginx,所以需要把Apache的用戶替換成Nginx.

[RUN mkdir -p /app && echo "" > ${APP_DIR}/info.php] 創建/app目錄。phpinfo用來來測試Nginx和php-fpm之間有沒有創建成功,因此創建了info.php文件放到了/app目錄下。

[EXPOSE 80 443] Nginx默認端口號是80,https是443.該指令可以不寫,但是推薦寫上,讓人一眼就知道要暴露端口80和443.

[ADD supervisor_nginx.conf /etc/supervisor.conf.d/nginx.conf] 添加啟動Nginx和啟動php-pfm的配置文件

[ADD supervisor_php-fpm.conf /etc/supervisor.conf.d/php-fpm.conf] 添加啟動Nginx和啟動php-pfm的配置文件

[ONBUILD ADD . /app] onbuild是dockerfile中非常重要的一條命令。onbuild在構建這一個鏡像的時候不生效。他在什么時候生效呢?比如說現在生成了一個php-pfm的鏡像,他會在下一個鏡像里面生效。用好onbuild發布產品非常的快,開發人員要做的工作也非常少。

[ONBUILD RUN chown -R nginx:nginx /app]

構建php-fpm鏡像

docker build -t csphere/php-fpm:5.4 .

查看鏡像

docker images

以上鏡像已經做好了。下面測試它能不能提供一個php和Nginx的功能。

測試PHP和Nginx功能
創建docker容器

[root@Optimus php-fpm]# docker run -d -p 8080:80 --name website csphere/php-fpm:5.4
e274049db704780a4742103afbf206a9a924eb2f9982dbc18432b94008f8a032

創建docker容器,用8080映射Nginx的80端口,docker容器名為website,使用docker鏡像為csphere/php-fpm:5.4.

查看docker container狀態

docker ps -a

[root@Optimus php-fpm]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                CREATED             STATUS                    PORTS                                   NAMES
e274049db704        csphere/php-fpm:5.4   "/usr/bin/supervisor   58 seconds ago      Up 55 seconds             22/tcp, 443/tcp, 0.0.0.0:8080->80/tcp   website             
2d36dbfc72a0        csphere/centos:7.1    "/usr/bin/supervisor   23 hours ago        Up 23 hours               0.0.0.0:2222->22/tcp                    base                
0d1f6225836b        centos                "/bin/bash"            2 days ago          Exited (127) 2 days ago                                           naughty_engelbart   
[root@Optimus php-fpm]# 

查看公網IP

ifconfig eth1

eth1 這塊網卡是公網IP。公網IP地址為 inet addr:10.10.4.182

訪問瀏覽器

http://inet addr:8080/info.php

比如: http://10.10.4.182:8080/info.php

映射的是宿主機的8080端口。Nginx默認加載的是index.html或者index.php,剛才在創建的時候沒有加這些文件。這里訪問的是info.php。

看到下面的界面說明Nginx已經啟動成功,并能夠和php-fpm進行結合來解析PHP代碼

進入container中查看Nginx和PHP是否啟動

docker exec -it website /bin/bash 

進入交互式模式,進入website這個container的/bin/bash界面 

[root@Optimus /]# docker exec -it website /bin/bash 
[root@e274049db704 /]# 


查看有多個服務的的container

supervisorctl

由于是基于centos基礎鏡像構建的php-fpm這個docker鏡像,因此已經具備了基礎鏡像的所有功能。

[root@e274049db704 /]# supervisorctl
nginx                            RUNNING   pid 7, uptime 0:34:43
php-fpm                          RUNNING   pid 8, uptime 0:34:43
supervisor> 

可以看到php-fpm和Nginx已經完全啟動在了docker容器中。

exit 退出

supervisor> exit
[root@e274049db704 /]# exit
exit

退出后查看container狀態(仍然還是UP狀態)

docker ps -a

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26021.html

相關文章

  • Docker實戰入門Dockerfile詳細分析構建docker鏡像2間件鏡像

    摘要:構建鏡像時,首先要有一個基礎鏡像,然后有中間件鏡像,最后生成一個應用鏡像。現在作為基礎鏡像,下面來構建兩個中間件鏡像鏡像具有和能力的鏡像。同時,用文件覆蓋默認的配置文件。構建鏡像查看鏡像以上鏡像已經做好了。 以上已經構建好了一個基礎的docker鏡像centos7。 構建docker鏡像時,首先 要有一個基礎鏡像,然后有中間件鏡像,最后生成一個應用鏡像。 現在centos7作為基礎鏡...

    neuSnail 評論0 收藏0
  • Docker實戰入門Dockerfile詳細分析構建docker鏡像(1)基礎鏡像cento

    摘要:如果有服務器需要維護重啟時,也會重啟,此時端口會發生變化,仍然會隨機拿一個沒有使用的端口號來和號端口做端口映射。除非該刪掉后,端口號會被分配給其他使用。 Dockerfile Docker是軟件工業上的集裝箱技術。 通過以下文件制作Docker鏡像 [root@Optimus docker-training]# cd centos7/ [root@Optimus centos7]# l...

    learn_shifeng 評論0 收藏0
  • Docker實戰入門Dockerfile詳細分析(5):ENTRYPOINT和CMD命令的區別

    摘要:用法在當中只有最后一條生效,其他都不生效第一種寫法類似數組形式,推薦使用。第二章方法執行命令啟動的進程,該進程的為執行完這個的。命令覆蓋掉了中的命令,直接進入到了中。刪除鏡像前,先停止。 ENTRYPOINT用法showImg(https://segmentfault.com/img/bVXNu5?w=702&h=322); entrypoint在dockerfile當中只有最后一條生...

    JerryWangSAP 評論0 收藏0

發表評論

0條評論

susheng

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<