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"]
主要修改了一下几点:
- wget mirrors.aliyun.com/composer/compos... #从国内阿里云进行拉去composer.phar
- composer config -g repo.packagist composer mirrors.aliyun.com/composer #更改composer镜像源为国内镜像源
目录挂载
为了方便开发,做了目录挂载与代码热重启。
- 项目代码目录挂载,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 协议》,转载必须注明作者和本文链接
推荐文章: