docker開荒hyperf遇到的一些問題

cheer發表於2020-08-18

開荒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 協議》,轉載必須註明作者和本文連結
大人中

相關文章