Code Monkey home page Code Monkey logo

Comments (13)

wernight avatar wernight commented on June 15, 2024

I admit I should update it, it's just very painful to maintain this one.

from docker-alpine-nginx-pagespeed.

oschaaf avatar oschaaf commented on June 15, 2024

@wernight there's also https://github.com/apache/incubator-pagespeed-ngx/tree/master/docker
On mod_pagespeed's master, we've ported the build to use bazel instead of gyp and lean more on absl/Envoy. That actually
might make life easier (but I'd have to try and see if that holds).
Also, 1.14 was released as a first apache incubator release. (not announced yet).

from docker-alpine-nginx-pagespeed.

oschaaf avatar oschaaf commented on June 15, 2024

(For master, I suspect taking https://hub.docker.com/r/envoyproxy/envoy-alpine as a base could be convenient)

from docker-alpine-nginx-pagespeed.

oschaaf avatar oschaaf commented on June 15, 2024

FWIW, there's no one with proper docker knowledge/experience involved in maintaining the apache ones,
and help is surely welcome there :-)

from docker-alpine-nginx-pagespeed.

wernight avatar wernight commented on June 15, 2024

(For master, I suspect taking https://hub.docker.com/r/envoyproxy/envoy-alpine as a base could be convenient)

I'm really reluctant to use a base image that is not an official OS of Docker Hub and that doesn't even show its sources, for a web server. That's a clear no no.

The Dockerfile you pointed out is useful, however it's 2 years old. After trying a bit, the main issue is that the documentation regarding how to build manually fails with weird errors on Alpine. It says that it cannot find PSOL. The real reason which is hidden is that ld cannot find many musl dependencies (basically LIBC which Alpine doesn't have).

Falling back to building PSOL is badly documented and relying on so many things it should not: bash, lsb_release... Just cloning from git.apache.org is so slow that it often times out which worries me for building this even if I manage to write a Dockerfile.

On https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source (which I cannot edit), I'd suggest to replace for example:

wget ${psol_url}
tar -xzvf $(basename ${psol_url})  # extracts to psol/

by

wget -O- ${psol_url} | tar -xzv  # extracts to psol/

Much easier to read and execute.

from docker-alpine-nginx-pagespeed.

oschaaf avatar oschaaf commented on June 15, 2024

I can add that, but it's also possible to propose it over at:
https://github.com/apache/incubator-pagespeed-mod/tree/master/html
(modpagespeed.com mirrors that)

from docker-alpine-nginx-pagespeed.

oschaaf avatar oschaaf commented on June 15, 2024

Regarding Envoy's docker images, I think they are available via https://github.com/envoyproxy/envoy/tree/master/ci (the continuous integration pushes them). But I wasn't lying when I said I'm not expert here, so just pointing it out; if it's useful -- I'll leave that up to you :-)

from docker-alpine-nginx-pagespeed.

wernight avatar wernight commented on June 15, 2024

What if ngx_pagespeed as provided as an AppImage? I'm not sure but it might work on Alpine then without almost any work. AppImage/AppImageKit#1015

I'll update the dev branch with what I currently have.

Looks like PSOL uses fortied LIBC which isn't implemented on Alpine: https://stackoverflow.com/questions/55246192/musl-gcc-undefined-reference-to-memcpy-chk. Building PSOL says it cannot handle Alpine distro. So overall at the moment PSOL is giving me the most trouble.

For reference here is that basic Dockerfile:

FROM alpine:3.12

RUN set -x \
 && apk add ---no-cache -t .build-deps \
        g++ \
        libc6-compat \
        make \
        pcre-dev \
        util-linux-dev \
        zlib-dev \
    # Download PageSpeed (and PSOL).
 && wget -O- https://github.com/apache/incubator-pagespeed-ngx/archive/${PAGESPEED_VERSION}.tar.gz | tar -xzC /tmp \
 && mv /tmp/incubator-pagespeed-ngx-* /tmp/ngx_pagespeed \
 && cd $_ \
 && PSOL_BINARY_URL=$(sh scripts/format_binary_url.sh PSOL_BINARY_URL) \
 && wget -O- ${PSOL_BINARY_URL} | tar -xz \
    # Build Nginx with support for PageSpeed.
 && wget -O- http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz | tar -xzC /tmp \
 && cd /tmp/nginx-* \
 && ./configure --add-module=/tmp/ngx_pagespeed \
 && make install --silent

from docker-alpine-nginx-pagespeed.

wernight avatar wernight commented on June 15, 2024

One more issue regarding build PSOL: The latest release does not seem to have submodules defined: https://github.com/apache/incubator-pagespeed-ngx/blob/v1.13.35.2-stable/.gitmodules

So it looks like either need to guess a compatible PSOL, or build from latest snapshot. Neither are good options.

from docker-alpine-nginx-pagespeed.

wernight avatar wernight commented on June 15, 2024

@oschaaf Once there is a release with PSOL source code, I'll try again to compile PSOL.

from docker-alpine-nginx-pagespeed.

oschaaf avatar oschaaf commented on June 15, 2024

Well, there's psol-1.14.36.1-apache-incubating-x64.tar.gz

from docker-alpine-nginx-pagespeed.

oschaaf avatar oschaaf commented on June 15, 2024

Sorry - that went out too early; I wanted to point to https://dist.apache.org/repos/dist/release/incubator/pagespeed/1.14.36.1/x64/

from docker-alpine-nginx-pagespeed.

wernight avatar wernight commented on June 15, 2024

Thank you. Btw. I replied on apache/incubator-pagespeed-mod#2021

from docker-alpine-nginx-pagespeed.

Related Issues (4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.