|
1 | | -FROM debian:stretch-slim |
| 1 | +FROM docker.io/debian:bullseye-slim |
2 | 2 |
|
3 | | -LABEL maintainer="adrien@adorsaz.ch" |
4 | | -LABEL version="1.0" |
5 | | -LABEL description="Run LinuxFr.org Ruby on Rails website" |
| 3 | +LABEL org.opencontainers.image.title="LinuxFr.org website" |
| 4 | +LABEL org.opencontainers.image.description="Run LinuxFr.org Ruby on Rails website" |
| 5 | +LABEL org.opencontainers.image.source="https://github.com/linuxfrorg/linuxfr.org" |
| 6 | +LABEL org.opencontainers.image.url="https://github.com/linuxfrorg/linuxfr.org/blob/master/Docker.md" |
| 7 | +LABEL org.opencontainers.image.licenses="AGPL-3.0-only" |
| 8 | +LABEL org.opencontainers.image.version="2.0" |
| 9 | +LABEL org.opencontainers.image.authors="Adrien Dorsaz <adrien@adorsaz.ch>" |
6 | 10 |
|
7 | | -WORKDIR /linuxfr.org |
| 11 | +ARG UID=1200 |
8 | 12 |
|
9 | 13 | # Install system dependencies |
10 | | -# Debian Stretch has been archived so we replace the sources with the archived ones |
11 | | -RUN echo 'deb http://archive.debian.org/debian stretch main' > '/etc/apt/sources.list' \ |
12 | | - && echo 'deb http://archive.debian.org/debian stretch-proposed-updates main' >> '/etc/apt/sources.list' \ |
13 | | - && echo 'deb http://archive.debian.org/debian stretch-backports main' >> '/etc/apt/sources.list.d/linuxfr.list' \ |
14 | | - && apt-get update \ |
15 | | - && apt-get install -y --no-install-recommends --allow-downgrades \ |
16 | | - mysql-client libmysql++-dev git \ |
17 | | - build-essential openssl libreadline-dev curl libcurl4-openssl-dev zlib1g=1:1.2.8.dfsg-5 \ |
| 14 | +RUN \ |
| 15 | + set -eux; \ |
| 16 | + IFS=$'\n\t'; \ |
| 17 | + apt-get update; \ |
| 18 | + apt-get install -y --no-install-recommends --allow-downgrades \ |
| 19 | + mariadb-client libmariadb++-dev git \ |
| 20 | + build-essential openssl libreadline-dev curl libcurl4-openssl-dev zlib1g \ |
18 | 21 | zlib1g-dev libssl-dev libxml2-dev libxslt-dev autoconf libgmp-dev libyaml-dev \ |
19 | 22 | ncurses-dev bison automake libtool imagemagick libc6-dev hunspell \ |
20 | 23 | hunspell-fr-comprehensive ruby ruby-dev ruby-rack \ |
21 | | - && apt-get install -t stretch-backports -y --no-install-recommends \ |
22 | | - nodejs npm \ |
23 | | - && gem install bundler -v 1.17.3 \ |
24 | | - && apt-get clean |
| 24 | + nodejs npm; \ |
| 25 | + gem install bundler -v 1.17.3; \ |
| 26 | + apt-get clean |
25 | 27 |
|
26 | | -RUN mkdir /home/linuxfr.org |
27 | | -ENV HOME /home/linuxfr.org |
| 28 | +USER ${UID} |
| 29 | +ENV HOME=/linuxfr.org |
| 30 | +WORKDIR /linuxfr.org |
28 | 31 |
|
29 | 32 | # Install node external dependencies |
30 | | -COPY package*.json ./ |
| 33 | +COPY --chown=${UID}:0 --chmod=770 package*.json ./ |
31 | 34 | RUN npm ci |
32 | 35 |
|
33 | 36 | # Install external dependencies |
34 | | -COPY Gemfile* ./ |
| 37 | +COPY --chown=${UID}:0 --chmod=770 Gemfile* ./ |
| 38 | + |
| 39 | +USER 0 |
| 40 | +RUN \ |
| 41 | + set -eux; \ |
| 42 | + IFS=$'\n\t'; \ |
| 43 | + bundle config set path 'vendor/bundle'; \ |
| 44 | + bundle config set deployment 'true'; \ |
| 45 | + bundle install; \ |
| 46 | + chown ${UID}:0 -R .; |
35 | 47 |
|
36 | | -RUN bundle config set path 'vendor/bundle' \ |
37 | | - && bundle config set deployment 'true' \ |
38 | | - && bundle install |
| 48 | +USER ${UID} |
39 | 49 |
|
40 | 50 | # Configure the application |
41 | | -COPY deployment/linuxfr.org/database.yml config/database.yml |
42 | | -COPY config/secrets.yml.sample config/secrets.yml |
| 51 | +COPY --chown=${UID}:0 --chmod=770 deployment/linuxfr.org/database.yml config/database.yml |
| 52 | +COPY --chown=${UID}:0 --chmod=770 config/secrets.yml.sample config/secrets.yml |
43 | 53 |
|
44 | 54 | # Bundle source code |
45 | | -COPY . /linuxfr.org |
| 55 | +COPY --chown=${UID}:0 --chmod=770 . /linuxfr.org |
46 | 56 |
|
47 | 57 | EXPOSE 3000 |
48 | 58 |
|
|
0 commit comments