docker workerman
2019-04-06 本文已影响0人
张大胆_6a19
一、docker php && event,参考lnmp
FROM centos:7
MAINTAINER 569072171@qq.com
# 更新yum远
RUN yum install epel-release -y && yum update -y
# 更新环境(包括php)依赖的组件
RUN yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
# 安装php
FROM centos:7
MAINTAINER 569072171@qq.com
# 更新yum远
RUN yum install epel-release -y && yum update -y
# 更新环境(包括php)依赖的组件
RUN yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
# 安装php、配置php.ini、配置php环境变量
ADD php-7.2.17.tar.gz /tmp/
RUN cd /tmp/php-7.2.17 && \
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/conf.d \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir=/usr/local/freetype \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-pcntl \
--enable-ftp \
--with-gd \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--enable-opcache && \
make -j 4 && make install && \
cp php.ini-production /usr/local/php/etc/php.ini && \
sed -i 's/post_max_size =.*/post_max_size = 50M/g' /usr/local/php/etc/php.ini && \
sed -i 's/upload_max_filesize =.*/upload_max_filesize = 50M/g' /usr/local/php/etc/php.ini && \
sed -i 's/;date.timezone =.*/date.timezone = PRC/g' /usr/local/php/etc/php.ini && \
sed -i 's/short_open_tag =.*/short_open_tag = On/g' /usr/local/php/etc/php.ini && \
sed -i 's/;cgi.fix_pathinfo=.*/cgi.fix_pathinfo=0/g' /usr/local/php/etc/php.ini && \
sed -i 's/max_execution_time =.*/max_execution_time = 300/g' /usr/local/php/etc/php.ini && \
sed -i 's/disable_functions =.*/disable_functions = passthru,exec,system,chroot,chgrp,chown,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru/g' /usr/local/php/etc/php.ini && \
echo PATH=$PATH:/usr/local/php/bin >> /etc/profile && \
echo export PATH >> /etc/profile && \
source /etc/profile
# 安装event
ADD event-2.4.3.tgz /tmp/
RUN cd /tmp/event-2.4.3 && \
/usr/local/php/bin/phpize && \
./configure --with-php-config=/usr/local/php/bin/php-config && \
make && make install && \
echo extension=event.so >> /usr/local/php/etc/php.ini
# 添加工作目录
RUN mkdir /home/wwwroot/workerman-thinkphp -p
# ADD workerman-thinkphp.tar.gz /home/wwwroot/
WORKDIR /home/wwwroot/workerman-thinkphp
# EXPOSE 80
# CMD ["/usr/local/php/bin/php", "think", "worker"]
a)验证安装event是否成功
# php -m |grep event
b)验证workerman是否成功
# curl -Ss http://www.workerman.net/check.php | php
二、文件包

三、build命令,注意"."
# docker build -t workerman:v20 .
四、run命令,生成多个容器
# docker container run -itd --name=workerman-thinkphp-5001 -p 5001:80 --mount type=bind,src=/home/wwwroot/workerman-thinkphp,dst=/home/wwwroot/workerman-thinkphp workerman:v10 /usr/local/php/bin/php think worker
# docker container run -itd --name=workerman-thinkphp-5002 -p 5002:80 --mount type=bind,src=/home/wwwroot/workerman-thinkphp,dst=/home/wwwroot/workerman-thinkphp workerman:v10 /usr/local/php/bin/php think worker
五、其他命令
a) 重启docker
b)删除全部容器(停止为stop)
# docker rm $(docker ps -a -q)
c)查看全部容器
# docker ps
d)查看停止运行容器
# docker ps -a
d)查看到单个容器日志(无论是否停止)
# docker logs -f bc374afdbead
e)删除镜像
# docker rmi <id>