update
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
**
|
||||||
|
!app/
|
||||||
|
!bin/
|
||||||
|
!config/
|
||||||
|
!migrations/
|
||||||
|
!composer.*
|
||||||
|
!entrypoint.sh
|
||||||
+27
-38
@@ -1,54 +1,43 @@
|
|||||||
# Default Dockerfile
|
FROM docker.io/hyperf/hyperf:8.3-alpine-v3.19-swoole
|
||||||
#
|
|
||||||
# @link https://www.hyperf.io
|
|
||||||
# @document https://hyperf.wiki
|
|
||||||
# @contact group@hyperf.io
|
|
||||||
# @license https://github.com/hyperf/hyperf/blob/master/LICENSE
|
|
||||||
|
|
||||||
FROM hyperf/hyperf:8.3-alpine-v3.19-swoole
|
LABEL org.opencontainers.image.title="datahub-backend" \
|
||||||
LABEL maintainer="Hyperf Developers <group@hyperf.io>" version="1.0" license="MIT" app.name="Hyperf"
|
org.opencontainers.image.vendor="WPIC" \
|
||||||
|
org.opencontainers.image.licenses="MIT" \
|
||||||
|
org.opencontainers.image.source="https://192.168.30.181:3000/wpic-dev/datahub"
|
||||||
|
|
||||||
##
|
ARG TIMEZONE=Asia/Shanghai
|
||||||
# ---------- env settings ----------
|
ENV TIMEZONE=${TIMEZONE} \
|
||||||
##
|
|
||||||
# --build-arg timezone=Asia/Shanghai
|
|
||||||
ARG timezone
|
|
||||||
|
|
||||||
ENV TIMEZONE=${timezone:-"Asia/Shanghai"} \
|
|
||||||
APP_ENV=prod \
|
APP_ENV=prod \
|
||||||
SCAN_CACHEABLE=(true)
|
SCAN_CACHEABLE=(true)
|
||||||
|
|
||||||
# update
|
RUN set -eux; \
|
||||||
RUN set -ex \
|
php -v; php -m; php --ri swoole; \
|
||||||
# show php version and extensions
|
cd /etc/php*; \
|
||||||
&& php -v \
|
{ \
|
||||||
&& php -m \
|
|
||||||
&& php --ri swoole \
|
|
||||||
# ---------- some config ----------
|
|
||||||
&& cd /etc/php* \
|
|
||||||
# - config PHP
|
|
||||||
&& { \
|
|
||||||
echo "upload_max_filesize=128M"; \
|
echo "upload_max_filesize=128M"; \
|
||||||
echo "post_max_size=128M"; \
|
echo "post_max_size=128M"; \
|
||||||
echo "memory_limit=1G"; \
|
echo "memory_limit=1G"; \
|
||||||
echo "date.timezone=${TIMEZONE}"; \
|
echo "date.timezone=${TIMEZONE}"; \
|
||||||
} | tee conf.d/99_overrides.ini \
|
} | tee conf.d/99_overrides.ini; \
|
||||||
# - config timezone
|
ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \
|
||||||
&& ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
|
echo "${TIMEZONE}" > /etc/timezone; \
|
||||||
&& echo "${TIMEZONE}" > /etc/timezone \
|
rm -rf /var/cache/apk/* /tmp/* /usr/share/man
|
||||||
# ---------- clear works ----------
|
|
||||||
&& rm -rf /var/cache/apk/* /tmp/* /usr/share/man \
|
|
||||||
&& echo -e "\033[42;37m Build Completed :).\033[0m\n"
|
|
||||||
|
|
||||||
WORKDIR /opt/www
|
WORKDIR /opt/www
|
||||||
|
|
||||||
# Composer Cache
|
COPY composer.json composer.lock ./
|
||||||
# COPY ./composer.* /opt/www/
|
RUN composer install --no-dev --no-scripts --no-autoloader --prefer-dist --no-interaction
|
||||||
# RUN composer install --no-dev --no-scripts
|
|
||||||
|
|
||||||
COPY . /opt/www
|
COPY . .
|
||||||
RUN composer install --no-dev -o && php bin/hyperf.php
|
RUN composer dump-autoload --optimize --classmap-authoritative --no-dev
|
||||||
|
|
||||||
|
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
|
RUN chmod +x /usr/local/bin/entrypoint.sh
|
||||||
|
|
||||||
EXPOSE 9501
|
EXPOSE 9501
|
||||||
|
|
||||||
ENTRYPOINT ["php", "/opt/www/bin/hyperf.php", "start"]
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
|
||||||
|
CMD wget -qO- http://127.0.0.1:9501/health || exit 1
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||||
|
CMD ["php", "/opt/www/bin/hyperf.php", "start"]
|
||||||
|
|||||||
Generated
+10920
File diff suppressed because it is too large
Load Diff
Executable
+41
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Datahub backend container entrypoint.
|
||||||
|
# Flow: wait_tcp pg/mq -> migrate --force -> app:install -> exec swoole.
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
wait_tcp() {
|
||||||
|
host="$1"
|
||||||
|
port="$2"
|
||||||
|
label="$3"
|
||||||
|
timeout="${4:-90}"
|
||||||
|
echo "[entrypoint] waiting for ${label} @ ${host}:${port} (up to ${timeout}s)"
|
||||||
|
i=0
|
||||||
|
while [ "$i" -lt "$timeout" ]; do
|
||||||
|
if php -r "exit(@fsockopen('${host}', ${port}, \$e, \$s, 1) ? 0 : 1);" 2>/dev/null; then
|
||||||
|
echo "[entrypoint] ${label} reachable"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
i=$((i + 1))
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
echo "[entrypoint] ${label} @ ${host}:${port} unreachable after ${timeout}s" >&2
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
DB_HOST="${DB_HOST:-host.containers.internal}"
|
||||||
|
DB_PORT="${DB_PORT:-5432}"
|
||||||
|
AMQP_HOST="${AMQP_HOST:-host.containers.internal}"
|
||||||
|
AMQP_PORT="${AMQP_PORT:-5672}"
|
||||||
|
WAIT_TIMEOUT="${ENTRYPOINT_WAIT_TIMEOUT:-90}"
|
||||||
|
|
||||||
|
wait_tcp "${DB_HOST}" "${DB_PORT}" "postgres" "${WAIT_TIMEOUT}"
|
||||||
|
wait_tcp "${AMQP_HOST}" "${AMQP_PORT}" "rabbitmq" "${WAIT_TIMEOUT}"
|
||||||
|
|
||||||
|
echo "[entrypoint] running migrate --force"
|
||||||
|
php /opt/www/bin/hyperf.php migrate --force
|
||||||
|
|
||||||
|
echo "[entrypoint] running app:install"
|
||||||
|
php /opt/www/bin/hyperf.php app:install
|
||||||
|
|
||||||
|
echo "[entrypoint] handing off to: $*"
|
||||||
|
exec "$@"
|
||||||
Reference in New Issue
Block a user