摘要:部署一個應用程序的過程絕對是一個噩夢般的經歷。準備開始,我們創建一個一個中包含怎樣創建你想要的鏡像的指令。使用告知使用官方社區最新版本的可用鏡像。這個鏡像在的可用版本。
注:本文由 Mike Ebinum 編寫,原文地址 Creating a Docker Container to run PHP, NGINX and Hip Hop VM (HHVM)
對于 Docker,我感到非常的興奮,作為一個開發人員,在早些時候,我花費了太多的時間陷入了 .NET 工作中我不喜歡的幾件事情中,如在不同的環境中部署和測試。部署一個 web 應用程序的過程絕對是一個噩夢般的經歷。并且甚至在那之后,我遷移到基于 UNIX 平臺開發,然后使用開源的工具/語言,如 Node, Java, Scala, PHP 等等,我發現同樣的部署問題一次又一次的發生。
使用如 Docker 這樣的工具,你可以讓你開發環境的配置精確的如生產環境的鏡像一樣。部署一個你的 web 應用程序的容器,任何東西都被配置了,你再也不用太擔心關于部署的那些麻煩事。
如果你是一個 Docker 的新手,并且不是十分確定它是什么,以下這些文章能給你一個完美的學習綱要,去吧,讀完它們,我等著。
Docker Lightweight linux containers for consistent development and deployment
Docker: Using Linux Containers to Support Portable Application deployment
作為一個懶惰的程序員,我的夢想成真了,只要做一次,然后你再也不用為它操心了(在一定程度上),無論如何你都不會來到這里對我咆哮,在這篇文章中,我將向你展示,為你開發環境基于以下怎樣創建并且運行一個 Docker 容器。
CentOS
Nginx web server
PHP with Hip Hop VM (HHVM)
Dockerfile準備開始,我們創建一個 Dockerfile - 一個 Dockerfile 中包含怎樣創建你想要的鏡像的指令。
FROM centos:centos6 MAINTAINER Mike Ebinum, hello@seedtech.io使用 Cent OS 6.x
告知 Docker 使用官方社區最新版本的 CentOS 6.x 可用鏡像。
更新鏡像安裝所有最新版本的包更新,并且把 Red Hat EPEL 的倉庫加入可用的倉庫列表。
RUN yum update -y >/dev/null && yum install -y http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm && curl -L -o /etc/yum.repos.d/hop5.repo "http://www.hop5.in/yum/el6/hop5.repo"安裝包
安裝 supervisord - 我們將使用這個配置和控制運行在容器中的進程 -, nginx, php, 一些 PHP 的開發包以及 Facebook 的 hhvm
RUN yum install -y python-meld3 http://dl.fedoraproject.org/pub/epel/6/i386/supervisor-2.1-8.el6.noarch.rpm RUN ["yum", "-y", "install", "nginx", "php", "php-mysql", "php-devel", "php-gd", "php-pecl-memcache", "php-pspell", "php-snmp", "php-xmlrpc", "php-xml","hhvm"]配置 Nginx, HHVM 和 Supervisord
為 nginx 創建目錄,并且把 index.php 文件加入 nginx 來展現。
RUN mkdir -p /var/www/html && chmod a+r /var/www/html && echo "" > /var/www/html/index.php
下一組指令是:
為 HHVM 添加一個配置文件,然后重起我們的 HHVM 服務
為 Supervisord 添加一個配置文件,然后啟動 Nginx 和 HHVM
ADD config.hdf /etc/hhvm/config.hdf RUN service hhvm restart ADD nginx.conf /etc/nginx/conf.d/default.conf ADD supervisord.conf /etc/supervisord.conf RUN chkconfig supervisord on && chkconfig nginx on
添加一個 shell 腳本 /run.sh,當 Docker 容器正在運行的時候將啟動
run.sh
#!/bin/bash set -e -x echo "starting supervisor in foreground" supervisord -n
ADD scripts/run.sh /run.sh RUN chmod a+x /run.sh EXPOSE 22 80 ENTRYPOINT ["/run.sh"]
構建容器,并且打 tag
docker build -t centos-nginx-php5-hhvm .
現在我們有一個全功能的容器,我們可以像下面這樣運行他:
docker run -d -p 80:80 centos-nginx-php5-hhvm
如果你已經有本地的服務已經在運行并且占用了 80 端口,你能很容易的的改變容器的對外端口。
這個 Docker 鏡像在 docker registry 的可用版本。
Dockerfile完整的 Dockerfile 如下
# DOCKER-VERSION 1.0.0 FROM centos:centos6 MAINTAINER Mike Ebinum, hello@seedtech.io # Install dependencies for HHVM # yum update -y >/dev/null && RUN yum install -y http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm && curl -L -o /etc/yum.repos.d/hop5.repo "http://www.hop5.in/yum/el6/hop5.repo" # Install supervisor RUN yum install -y python-meld3 http://dl.fedoraproject.org/pub/epel/6/i386/supervisor-2.1-8.el6.noarch.rpm #install nginx, php, mysql, hhvm RUN ["yum", "-y", "install", "nginx", "php", "php-mysql", "php-devel", "php-gd", "php-pecl-memcache", "php-pspell", "php-snmp", "php-xmlrpc", "php-xml","hhvm"] # Create folder for server and add index.php file to for nginx RUN mkdir -p /var/www/html && chmod a+r /var/www/html && echo "" > /var/www/html/index.php #Setup hhvm - add config for hhvm ADD config.hdf /etc/hhvm/config.hdf RUN service hhvm restart # ADD Nginx config ADD nginx.conf /etc/nginx/conf.d/default.conf # ADD supervisord config with hhvm setup ADD supervisord.conf /etc/supervisord.conf #set to start automatically - supervisord, nginx and mysql RUN chkconfig supervisord on && chkconfig nginx on ADD scripts/run.sh /run.sh RUN chmod a+x /run.sh EXPOSE 22 80 #Start supervisord (which will start hhvm), nginx ENTRYPOINT ["/run.sh"]
在這篇文章中提到的其他的可用文件在 Github 上。
下一步?太棒了,我們現在有了一個環境配置,但我如何運行PHP應用程序?好問題,我將做后續的文章說明通過使用這個容器如何安裝和配置PHP應用程序。訂閱這個博客, 在 twitter 關注 @mikeebinum 和 @SEEDtechio 來獲得更新
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20793.html
摘要:部署一個應用程序的過程絕對是一個噩夢般的經歷。準備開始,我們創建一個一個中包含怎樣創建你想要的鏡像的指令。使用告知使用官方社區最新版本的可用鏡像。這個鏡像在的可用版本。 注:本文由 Mike Ebinum 編寫,原文地址 Creating a Docker Container to run PHP, NGINX and Hip Hop VM (HHVM) showImg(ht...
摘要:測試運行多次并取平均值。文章數量測試的基準測試基準測試結果基準測試結果基準測試結果基準測試結果基準測試結果基準測試結果不支持再次成為冠軍請注意的運行環境需要或以上。同時,再次不能正常工作并拋出錯誤。 showImg(https://segmentfault.com/img/remote/1460000013690286); 我們每年都會嘗試深入了解不同版本的 PHP 和 HHVM 在各...
摘要:創建完成后,執行重新加載配置文件創建數據庫在騰訊云的數據庫管理頁點擊登錄,進入到管理控制的頁面用你初始化時設置的密碼登錄。 推薦理由: 再小的的個體也有自己的品牌;再小的個體也有自己的網站。對于像我這樣的小白來說,能搭建一個屬于自己的網站,那是一件多么牛逼的事,呵呵噠!至少我覺得是這樣;這次逛騰訊云技術論壇時看到這篇文章,我覺得對于像我這樣的小白用戶,覺得是一篇非常不錯的教程,所以在此...
閱讀 4293·2021-09-24 09:47
閱讀 1184·2021-09-03 10:33
閱讀 2063·2019-08-30 11:13
閱讀 1029·2019-08-30 10:49
閱讀 1753·2019-08-29 16:13
閱讀 2046·2019-08-29 11:28
閱讀 3089·2019-08-26 13:31
閱讀 3631·2019-08-23 17:14