浏览代码

feat: add docker build files

MortyFx 7 月之前
父节点
当前提交
aa6acd6931
共有 2 个文件被更改,包括 83 次插入0 次删除
  1. 42 0
      Dockerfile
  2. 41 0
      docker/entrypoint.sh

+ 42 - 0
Dockerfile

@@ -0,0 +1,42 @@
+FROM php:7.4-apache
+
+# Install extensions
+RUN apt-get update && apt-get install -y \
+        libfreetype6-dev \
+        libjpeg62-turbo-dev \
+        libpng-dev \
+    && docker-php-ext-install -j$(nproc) iconv \
+    && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
+    && docker-php-ext-install -j$(nproc) gd
+
+# Prepare files and folders
+
+RUN mkdir -p /speedtest/
+
+# Copy sources
+
+COPY backend/ /speedtest/backend
+COPY chartjs/ /speedtest/chartjs
+
+COPY *.js /speedtest/
+COPY *.html /speedtest/
+
+COPY docker/entrypoint.sh /
+
+ENV TIME_ZONE=Asia/Shanghai
+RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone
+RUN printf '[PHP]\ndate.timezone = "Asia/Shanghai"\n' > /usr/local/etc/php/conf.d/tzone.ini
+
+# Prepare environment variabiles defaults
+
+ENV WEBPORT=80
+ENV MAX_LOG_COUNT=100
+ENV IP_SERVICE="ip.sb"
+ENV SAME_IP_MULTI_LOGS="false"
+
+VOLUME ["/speedlogs"]
+
+# Final touches
+
+EXPOSE 80
+CMD ["bash", "/entrypoint.sh"]

+ 41 - 0
docker/entrypoint.sh

@@ -0,0 +1,41 @@
+#!/bin/bash
+
+set -e
+set -x
+
+# Cleanup
+#rm -rf /var/www/html/*
+
+# Copy frontend files
+cp /speedtest/*.js /var/www/html/
+cp /speedtest/*.html /var/www/html/
+
+cp -r /speedtest/backend/ /var/www/html/backend
+cp -r /speedtest/chartjs/ /var/www/html/chartjs
+
+ln -snf /var/www/html/backend/speedlogs /speedlogs
+
+chown -R www-data /var/www/html/*
+
+# Allow selection of Apache port for network_mode: host
+if [ "$WEBPORT" != "80" ]; then
+  sed -i "s/^Listen 80\$/Listen $WEBPORT/g" /etc/apache2/ports.conf
+  sed -i "s/*:80>/*:$WEBPORT>/g" /etc/apache2/sites-available/000-default.conf
+fi
+
+if [ "$MAX_LOG_COUNT" != "100" ]; then
+  sed -i "s/^const MAX_LOG_COUNT = 100/const MAX_LOG_COUNT = $MAX_LOG_COUNT/g" /var/www/html/backend/config.php
+fi
+
+if [ "$IP_SERVICE" != "ip.sb" ]; then
+  sed -i "s/^const IP_SERVICE = 'ip.sb'/const IP_SERVICE = '$IP_SERVICE'/g" /var/www/html/backend/config.php
+fi
+
+if [ "$SAME_IP_MULTI_LOGS" != "false" ]; then
+  sed -i "s/^const SAME_IP_MULTI_LOGS = false/const SAME_IP_MULTI_LOGS = $SAME_IP_MULTI_LOGS/g" /var/www/html/backend/config.php
+fi
+
+echo "Done, Starting APACHE"
+
+# This runs apache
+apache2-foreground