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