记录docker自定义easyswoole镜像

9 篇文章 0 订阅

下载EasySwoole源码


gti clone https://github.com/easy-swoole/easyswoole.git

composer.json 添加

"repositories": [
        {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        },
        { "packagist": false }
    ]

添加 Dockerfile 文件

FROM php:7.2

MAINTAINER encircles

# 设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' > /etc/timezone

# 通过apt安装 包
RUN apt-get update \
    && apt-get install -y \
        vim \
        curl \
        wget \
        git \
        zip \
        libz-dev \
        libssl-dev \
        libnghttp2-dev \
    && apt-get clean \
    && apt-get autoremove

# 安装 composer
RUN curl -sS https://getcomposer.org/installer | php \
    && mv composer.phar /usr/local/bin/composer \
    && composer self-update --clean-backups
    #&& composer config -g repositories.packagist composer https://packagist.phpcomposer.com

# 安装redis
RUN pecl install redis && docker-php-ext-enable redis && pecl clear-cache

# 安装 pdo_mysql
RUN docker-php-ext-install pdo_mysql

# 编译安装 hiredis
RUN wget https://github.com/redis/hiredis/archive/v0.13.3.tar.gz -O hiredis.tar.gz \
    && mkdir -p hiredis \
    && tar -xf hiredis.tar.gz -C hiredis --strip-components=1 \
    && rm hiredis.tar.gz \
    && ( \
        cd hiredis \
        && make -j$(nproc) \
        && make install \
        && ldconfig \
    ) \
    && rm -r hiredis

# 编译安装 swoole
RUN wget https://github.com/swoole/swoole-src/archive/v2.1.3.tar.gz -O swoole.tar.gz \
    && mkdir -p swoole \
    && tar -xf swoole.tar.gz -C swoole --strip-components=1 \
    && rm swoole.tar.gz \
    && ( \
        cd swoole \
        && phpize \
        && ./configure --enable-async-redis --enable-mysqlnd --enable-coroutine --enable-openssl --enable-http2 \
        && make -j$(nproc) \
        && make install \
    ) \
    && rm -r swoole \
    && docker-php-ext-enable swoole

# 编译安装 inotify
RUN wget http://pecl.php.net/get/inotify-2.0.0.tgz -O inotify.tgz \
    && mkdir -p inotify \
    && tar -xf inotify.tgz -C inotify --strip-components=1 \
    && rm inotify.tgz \
    && ( \
        cd inotify \
        && phpize \
        && ./configure \
        && make \
        && make install \
    ) \
    && rm -r inotify \
    && docker-php-ext-enable inotify


# 从宿主系统的文件系统上复制文件到目标容器的文件系统
ADD . /var/www/easyswoole

# 进入工作目录
WORKDIR /var/www/easyswoole

# 运行composer 安装依赖
RUN composer install --no-dev\
    && composer dump-autoload -o \
    && composer clearcache

# easyswoole框架安装
RUN php bin/easyswoole install

# 指定在docker允许时指定的端口进行转发
EXPOSE 80

# 运行容器时执行命令
CMD ["php", "/var/www/easyswoole/bin/easyswoole", "start", "-d"]

在当前目录下运行命令

docker build -t yourImageName .# 使用此目录的 Dockerfile 创建镜像

运行容器

docker run -p 4000:9501 --name containerName yourImageName  # 运行端口 4000 到 9501 的映射 --name 为容器名称   可以添加 -p 4022:22 映射ssh端口

如果运行失败, 可以通过  

docker logs containerName # 查看日志

运行正常的话, 创建自定义镜像

docker login             # 使用您的 Docker 凭证登录此 CLI 会话
docker tag yourImageName username/repository:tag  # 标记 yourImageName 以上传到镜像库
docker push username/repository:tag            # 将已标记的镜像上传到镜像库
上传到镜像库之后,可以在别的电脑上运行docker
docker run -p 4000:9501 -p 4022:22 -d --name yourContainerName username/repository:tag                   # 运行镜像库中的镜像
inotify 扩展已经安装, 如果需要 热重启 的话, 在官方 Demo 例子里面找到    App\Process\Inotify 类  自行添加到项目
在  EasySwooleEvent.php 文件 mainServerCreate 方法里 添加如下代码:
ProcessManager::getInstance()->addProcess('autoReload', Inotify::class); # 记得 use Inotify class
最后重启容器





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值