/ docker / 8.2 / Dockerfile
Dockerfile
 1  FROM ubuntu:22.04
 2  
 3  LABEL maintainer="Taylor Otwell"
 4  
 5  ARG WWWGROUP
 6  ARG NODE_VERSION=18
 7  ARG POSTGRES_VERSION=14
 8  
 9  WORKDIR /var/www/html
10  
11  ENV DEBIAN_FRONTEND noninteractive
12  ENV TZ=Europe/Madrid
13  
14  RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
15  RUN apt-get update && apt-get install curl -y
16  
17  RUN curl -SLO https://deb.nodesource.com/nsolid_setup_deb.sh
18  RUN chmod 500 nsolid_setup_deb.sh
19  RUN ./nsolid_setup_deb.sh $NODE_VERSION
20  RUN apt-get install nodejs -y
21  
22  RUN apt-get install -y gnupg gosu ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils \
23      libreoffice-common libreoffice-writer libreoffice-calc \
24      && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /usr/share/keyrings/ppa_ondrej_php.gpg > /dev/null \
25      && echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
26      && apt-get update \
27      && apt-get install -y php8.2-cli php8.2-dev \
28      php8.2-pgsql php8.2-sqlite3 php8.2-gd \
29      php8.2-curl \
30      php8.2-imap php8.2-mysql php8.2-mbstring \
31      php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \
32      php8.2-intl php8.2-readline \
33      php8.2-ldap \
34      php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \
35      php8.2-memcached php8.2-pcov php8.2-xdebug php8.2-gnupg\
36      && php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
37      && apt-get install -y nodejs \
38      && npm install -g npm \
39      && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarn.gpg >/dev/null \
40      && echo "deb [signed-by=/usr/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
41      && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \
42      && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
43      && apt-get update \
44      && apt-get install -y yarn \
45      && apt-get install -y mysql-client \
46      && apt-get install -y postgresql-client-$POSTGRES_VERSION \
47      && apt-get install -y python3-pip \
48      && apt-get install -y swig \
49      && apt-get install -y pdftk-java \
50      && apt-get install -y poppler-utils \
51      && python3 -m pip install python-decouple \
52      && python3 -m pip install endesive \
53      && apt-get -y autoremove \
54      && apt-get clean \
55      && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
56  
57  
58  #needed for oracle
59  RUN apt-get update && apt-get install libaio1 -y\
60      && mkdir /opt/oracle\
61      && curl -o /opt/oracle/instantclient-basic.zip https://download.oracle.com/otn_software/linux/instantclient/2114000/instantclient-basic-linux.x64-21.14.0.0.0dbru.zip\
62      && unzip /opt/oracle/instantclient-basic.zip -d /opt/oracle\
63      && rm /opt/oracle/instantclient-basic.zip\
64      && curl -o /opt/oracle/instantclient-sdk.zip https://download.oracle.com/otn_software/linux/instantclient/2114000/instantclient-sdk-linux.x64-21.14.0.0.0dbru.zip\
65      && unzip /opt/oracle/instantclient-sdk.zip -d /opt/oracle\
66      && rm /opt/oracle/instantclient-sdk.zip\
67      && echo /opt/oracle/instantclient_21_14 > /etc/ld.so.conf.d/oracle-instantclient.conf\
68      && ldconfig\
69      && echo "instantclient,/opt/oracle/instantclient_21_14" | pecl install oci8
70  
71  RUN curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin
72  
73  RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2
74  
75  RUN groupadd --force -g $WWWGROUP sail
76  RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail
77  
78  #Folder used for gpg
79  RUN mkdir /var/www/.gnupg
80  RUN chmod 700 /var/www/.gnupg
81  
82  COPY start-container /usr/local/bin/start-container
83  COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
84  COPY php.ini /etc/php/8.2/cli/conf.d/99-sail.ini
85  RUN chmod +x /usr/local/bin/start-container
86  
87  EXPOSE 8000
88  
89  ENTRYPOINT ["start-container"]