docker开荒hyperf遇到的一些问题

开荒docker与hyperf

常用的docker命令在任何地方都可以进行查阅,所以本文就不复贴那些命令了,主要会针对hyperf文档里面docker安装踩过点坑,跟大家分享一下。

dockerfile

官方文档中提供了hyperf官方dockerfile。但是其中有composer.phar下载特别的慢,尤其是在国内的不加FQ的情况下,个人尝试了很多次都是镜像拉去失败,而且还把docker镜像源切换为国内的情况下。
后来检查了dockerfile发现,其中composer.phar是拉去github的资源,个人在腾讯云服务器上面的体验是极其差的,所以最后修调之后的dockerfile如下:

# Default Dockerfile
#
# @link     https://www.hyperf.io
# @document https://doc.hyperf.io
# @contact  group@hyperf.io
# @license  https://github.com/hyperf-cloud/hyperf/blob/master/LICENSE

FROM hyperf/hyperf:7.2-alpine-v3.9-cli
LABEL maintainer="Hyperf Developers <group@hyperf.io>" version="1.0" license="MIT" app.name="Hyperf"

##
# ---------- env settings ----------
##
# --build-arg timezone=Asia/Shanghai
ARG timezone

ENV TIMEZONE=${timezone:-"Asia/Shanghai"} \
    COMPOSER_VERSION=1.9.1 \
    APP_ENV=prod \
    SCAN_CACHEABLE=(true)

# update
RUN set -ex \
    && apk update \
    # install composer
    && cd /tmp \
    #&& wget https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar \
    && wget https://mirrors.aliyun.com/composer/composer.phar \
    && chmod u+x composer.phar \
    && mv composer.phar /usr/local/bin/composer \
    && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer \
    # show php version and extensions
    && php -v \
    && php -m \
    && php --ri swoole \
    #  ---------- some config ----------
    && cd /etc/php7 \
    # - config PHP
    && { \
        echo "upload_max_filesize=100M"; \
        echo "post_max_size=108M"; \
        echo "memory_limit=1024M"; \
        echo "date.timezone=${TIMEZONE}"; \
    } | tee conf.d/99_overrides.ini \
    # - config timezone
    && ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
    && echo "${TIMEZONE}" > /etc/timezone \
    # ---------- clear works ----------
    && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \
    && echo -e "\033[42;37m Build Completed :).\033[0m\n"

WORKDIR /opt/www

# Composer Cache
# COPY ./composer.* /opt/www/
# RUN composer install --no-dev --no-scripts

COPY . /opt/www
RUN composer install --no-dev -o && php bin/hyperf.php

EXPOSE 9501

ENTRYPOINT ["php", "/opt/www/bin/hyperf.php", "start"]

主要修改了一下几点:

目录挂载

为了方便开发,做了目录挂载与代码热重启

  • 项目代码目录挂载,docker run -v 宿主路径:镜像路径
  • 以php bin/hyperf.php server:watch 方式开启项目,启用热更新

关于宿主机与docker容器之间mysql与redis连接问题

如果连接是走公网ip的话,那就以正常的方式进行配置就行。个人刚好docker容器所在的宿主机与redis服务跟mysql服务都在一个云服务器上,故想着走本地连接进行连接。一开始一直走127.0.0.1,一直连接不成功。后台,通过在容器与宿主执行==ifconfig==才发现。一个是17如果连接是走公网ip的话,那就以正常的方式进行配置就行。个人刚好docker容器所在的宿主机与redis服务跟mysql服务都在一个云服务器上,故想着走本地连接进行连接。一开始一直走127.0.0.1,一直连接不成功。后台,通过在容器与宿主执行==ifconfig==才发现。一个是127.17.0.1 ,docker实例上为 172.17.0.2。(具体得补一下网络知识这块基础),通过调整之后,才完成了配置信息的连接。整理了几个点
.17.0.1 ,docker实例上为 172.17.0.2。(具体得补一下网络知识这块基础),通过调整之后,才完成了配置信息的连接。整理了几个点

  • redis.conf 文件,其中bind 127.0.0.1 记得用 # 进行注释,开放外网连接
  • redis.conf 文件,关闭 protected-mode
  • mysql使用的连接账户信息,需要开启外网连接权限

基本搞完这些,就可以开始快乐玩耍了。。。

本作品采用《CC 协议》,转载必须注明作者和本文链接
大人中
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 4
xiaoAgiao

这些不是坑,是你不熟和不懂

3年前 评论
xiaoAgiao

不知道你私信喷我干嘛,你这些所谓的“坑”就是一些基本知识 何为“坑”?

3年前 评论
cheer (楼主) 3年前
xiaoAgiao

file 麻烦素质一点可以嘛?这是一个高端社区

3年前 评论
cheer (楼主) 3年前
Summer 3年前
Summer 3年前
xiaoAgiao (作者) 3年前
tphp 3年前
小李世界 3年前
rufo 3年前
tphp 3年前
lintao523524 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!