|
1 |
| -FROM ruby:3.3.0 AS builder |
| 1 | +FROM debian:bookworm-slim AS builder |
2 | 2 |
|
3 | 3 | ENV DEBIAN_FRONTEND=noninteractive
|
4 |
| -ENV workdir=/var/www |
| 4 | + |
| 5 | +RUN apt-get update -qq && \ |
| 6 | + apt-get install -y gcc g++ make cmake \ |
| 7 | + libfcgi-dev libxml2-dev libmemcached-dev libbrotli-dev \ |
| 8 | + libboost-program-options-dev libcrypto++-dev libyajl-dev \ |
| 9 | + libpqxx-dev zlib1g-dev libfmt-dev \ |
| 10 | + postgresql-15 postgresql-server-dev-all dpkg-dev file ca-certificates git \ |
| 11 | + --no-install-recommends && \ |
| 12 | + apt-get clean && \ |
| 13 | + rm -rf /var/lib/apt/lists/* |
| 14 | + |
| 15 | +WORKDIR /app |
| 16 | + |
| 17 | +# Clone application |
5 | 18 | ENV CGIMAP_GITSHA=8ea707e10aeab5698e6859856111816d75354592
|
6 |
| -ENV cgimap=/tmp/openstreetmap-cgimap |
| 19 | +RUN git clone https://github.com/zerebubuth/openstreetmap-cgimap.git /app \ |
| 20 | +&& git checkout $CGIMAP_GITSHA |
7 | 21 |
|
8 |
| -RUN apt-get update && apt-get install -y --no-install-recommends \ |
9 |
| - build-essential cmake git curl file \ |
10 |
| - libxml2-dev libpqxx-dev libfcgi-dev zlib1g-dev libbrotli-dev \ |
11 |
| - libboost-program-options-dev libfmt-dev libmemcached-dev libcrypto++-dev \ |
12 |
| - libargon2-dev libyajl-dev \ |
13 |
| - && rm -rf /var/lib/apt/lists/* |
| 22 | +# Compile, install and remove source |
| 23 | +RUN mkdir build && cd build && \ |
| 24 | + CXXFLAGS="-flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=ON -DCMAKE_BUILD_TYPE=Release && \ |
| 25 | + make -j${nproc} && \ |
| 26 | + ctest --output-on-failure && \ |
| 27 | + cmake --build . -t package |
14 | 28 |
|
15 |
| -RUN git clone https://github.com/zerebubuth/openstreetmap-cgimap.git $cgimap \ |
16 |
| - && cd $cgimap \ |
17 |
| - && git checkout $CGIMAP_GITSHA \ |
18 |
| - && mkdir build && cd build && cmake .. && cmake --build . |
| 29 | +FROM debian:bookworm-slim |
19 | 30 |
|
| 31 | +COPY --from=builder /app/build/*.deb /app_deb/ |
20 | 32 |
|
21 |
| -FROM ruby:3.3.0-slim |
| 33 | +RUN apt-get update -qq && \ |
| 34 | + apt install --no-install-recommends -y /app_deb/*.deb postgresql-client procps && \ |
| 35 | + apt-get clean && \ |
| 36 | + rm -rf /var/lib/apt/lists/* |
22 | 37 |
|
23 |
| -ENV DEBIAN_FRONTEND=noninteractive |
| 38 | +RUN groupadd -g 61000 cgimap && \ |
| 39 | + useradd -g 61000 -l -M -s /bin/false -u 61000 cgimap |
| 40 | + |
| 41 | +EXPOSE 8000 |
24 | 42 |
|
25 |
| -RUN apt-get update && \ |
26 |
| - apt-get install -y --no-install-recommends curl gnupg && \ |
27 |
| - echo "deb http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ |
28 |
| - curl -sSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \ |
29 |
| - apt-get update && \ |
30 |
| - apt-get install -y --no-install-recommends \ |
31 |
| - libxml2 libpqxx-6.4 libfcgi zlib1g libbrotli1 \ |
32 |
| - libboost-program-options1.74.0 libfmt-dev libmemcached11 libcrypto++8 \ |
33 |
| - libargon2-1 libyajl2 libapache2-mod-fcgid postgresql-client \ |
34 |
| - && rm -rf /var/lib/apt/lists/* /var/cache/apt/* |
35 |
| - |
36 |
| -COPY --from=builder /tmp/openstreetmap-cgimap/build/openstreetmap-cgimap /usr/local/bin/openstreetmap-cgimap |
37 |
| - |
38 |
| -COPY *.sh / |
39 |
| -RUN chmod +x /*.sh && echo "/usr/local/lib" > /etc/ld.so.conf.d/local_libs.conf && ldconfig |
| 43 | +COPY ./*.sh . |
40 | 44 |
|
41 | 45 | CMD ["/start.sh"]
|
0 commit comments