diff --git a/.github/workflows/build-public-release.yml b/.github/workflows/build-public-release.yml deleted file mode 100644 index f40ab095..00000000 --- a/.github/workflows/build-public-release.yml +++ /dev/null @@ -1,90 +0,0 @@ -on: - push: - tags: - - '*' - pull_request: - paths: - - '.github/workflows/build-public.yml' - - 'docker/prod/**' - workflow_dispatch: - -name: Build - Public (Release) -jobs: - build: - runs-on: ubuntu-latest - permissions: - packages: write - contents: read - attestations: write - id-token: write - timeout-minutes: 90 - - steps: - - name: "Check out code" - uses: actions/checkout@v4 - - - name: "Copy .env template for production" - run: cp .env.production .env - - - name: "Install dependencies" - uses: php-actions/composer@v6 - if: steps.cache-vendor.outputs.cache-hit != 'true' # Skip if cache hit - with: - command: install - only_args: --no-dev --no-ansi --no-interaction --prefer-dist --ignore-platform-reqs --classmap-authoritative - php_version: 8.3 - - - name: "Use Node.js" - uses: actions/setup-node@v4 - with: - node-version: '20.x' - - - name: "Install npm dependencies" - run: npm ci - - - name: "Build" - run: npm run build - - - name: "Login to GitHub Container Registry" - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: "Login to GitHub Container Registry" - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: "Docker meta" - id: "meta" - uses: docker/metadata-action@v5 - with: - images: | - solidtime/solidtime - ghcr.io/${{ github.repository }} - tags: | - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - - - name: "Set up QEMU" - uses: docker/setup-qemu-action@v3 - - - name: "Set up Docker Buildx" - uses: docker/setup-buildx-action@v3 - - - name: "Build and push" - uses: docker/build-push-action@v6 - with: - context: . - file: docker/prod/Dockerfile - build-args: | - DOCKER_FILES_BASE_PATH=docker/prod/ - platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max diff --git a/.github/workflows/build-public.yml b/.github/workflows/build-public.yml index 4f06d4cd..8bf7c7fc 100644 --- a/.github/workflows/build-public.yml +++ b/.github/workflows/build-public.yml @@ -3,6 +3,8 @@ on: branches: - main - develop + tags: + - '*' pull_request: paths: - '.github/workflows/build-public.yml' diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile index 81b45e18..f5419147 100644 --- a/docker/prod/Dockerfile +++ b/docker/prod/Dockerfile @@ -41,6 +41,7 @@ FROM composer:${COMPOSER_VERSION} AS vendor FROM dunglas/frankenphp:${FRANKENPHP_VERSION}-php${PHP_VERSION} ARG DOCKER_FILES_BASE_PATH +ARG TARGETPLATFORM LABEL maintainer="solidtime " LABEL org.opencontainers.image.title="solidtime" @@ -77,6 +78,7 @@ RUN apt-get update; \ apt-get install -yqq --no-install-recommends --show-progress \ apt-utils \ curl \ + gcc \ wget \ nano \ ncdu \ @@ -133,6 +135,16 @@ RUN chown -R ${USER}:${USER} ${ROOT} /var/{log,run} \ RUN cp ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini +COPY --chown=${USER}:${USER} ${DOCKER_FILES_BASE_PATH}deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane-default.ini +COPY --chown=${USER}:${USER} ${DOCKER_FILES_BASE_PATH}deployment/php-arm.ini ${PHP_INI_DIR}/conf.d/99-octane-arm.ini + +RUN echo "TARGETPLATFORM is equal to ${TARGETPLATFORM}" +RUN if [ "${TARGETPLATFORM}" = "linux/arm64" ]; then \ + rm ${PHP_INI_DIR}/conf.d/99-octane-default.ini; \ + else \ + rm ${PHP_INI_DIR}/conf.d/99-octane-arm.ini; \ + fi + USER ${USER} COPY --chown=${USER}:${USER} --from=vendor /usr/bin/composer /usr/bin/composer @@ -158,7 +170,6 @@ COPY --chown=${USER}:${USER} ${DOCKER_FILES_BASE_PATH}deployment/supervisord.con COPY --chown=${USER}:${USER} ${DOCKER_FILES_BASE_PATH}deployment/octane/FrankenPHP/supervisord.frankenphp.conf /etc/supervisor/conf.d/ COPY --chown=${USER}:${USER} ${DOCKER_FILES_BASE_PATH}deployment/supervisord.*.conf /etc/supervisor/conf.d/ COPY --chown=${USER}:${USER} ${DOCKER_FILES_BASE_PATH}deployment/start-container /usr/local/bin/start-container -COPY --chown=${USER}:${USER} ${DOCKER_FILES_BASE_PATH}deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini # FrankenPHP embedded PHP configuration COPY --chown=${USER}:${USER} ${DOCKER_FILES_BASE_PATH}deployment/php.ini /lib/php.ini diff --git a/docker/prod/deployment/php-arm.ini b/docker/prod/deployment/php-arm.ini new file mode 100644 index 00000000..799f85e1 --- /dev/null +++ b/docker/prod/deployment/php-arm.ini @@ -0,0 +1,30 @@ +[PHP] +post_max_size = 100M +upload_max_filesize = 100M +expose_php = 0 +realpath_cache_size = 16M +realpath_cache_ttl = 360 +max_input_time = 5 + +[Opcache] +opcache.enable = 1 +opcache.enable_cli = 1 +opcache.memory_consumption = 256M +opcache.use_cwd = 0 +opcache.max_file_size = 0 +opcache.max_accelerated_files = 32531 +opcache.validate_timestamps = 0 +opcache.file_update_protection = 0 +opcache.interned_strings_buffer = 16 +opcache.file_cache = 60 + +[JIT] +opcache.jit_buffer_size = 128M +opcache.jit = disable +opcache.jit_prof_threshold = 0.001 +opcache.jit_max_root_traces = 2048 +opcache.jit_max_side_traces = 256 + +[zlib] +zlib.output_compression = On +zlib.output_compression_level = 9