-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDockerfile
167 lines (154 loc) · 7.26 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# FROM php:8.3-apache AS busyboxbuilder
# RUN cd / \
# && apt-get update -y \
# && apt-get install -y build-essential curl libntirpc-dev \
# && curl -L https://busybox.net/downloads/busybox-1.37.0.tar.bz2 | tar -xjv \
# && cd /busybox-1.37.0/
# COPY busybox.config /busybox-1.37.0/.config
# RUN cd /busybox-1.37.0/ && make install
FROM ismogroup/busybox:1.37.0-php-8.3-apache AS busyboxbuilder
FROM php:8.3-apache AS builder
ARG TARGETARCH
LABEL maintainer="Ronan <ronan.le_meillat@ismo-group.co.uk>"
RUN echo "Run for $TARGETARCH" && \
if [[ "$TARGETARCH" == "amd64" ]] ; then \
curl -fLSs https://repo.mysql.com/mysql-apt-config_0.8.33-1_all.deb > /tmp/mysql-apt-config_0.8.33-1_all.deb && \
DEBIAN_FRONTEND=noninteractive dpkg -i /tmp/mysql-apt-config_0.8.33-1_all.deb && \
apt-get update -y &&\
apt-get install -y --no-install-recommends mysql-client lsb-release wget gnupg ; \
else \
apt-get update -y &&\
apt-get install -y --no-install-recommends default-mysql-client ; \
fi
RUN apt-get update -y \
&& apt-get dist-upgrade -y \
&& apt-get install -y --no-install-recommends \
git \
libc-client-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libkrb5-dev \
libldap2-dev \
libpng-dev \
libpq-dev \
libxml2-dev \
libzip-dev \
libbz2-dev \
libmemcached-dev \
cron
RUN docker-php-ext-install opcache \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip \
&& docker-php-ext-configure ldap --with-libdir=lib/$(gcc -dumpmachine)/ \
&& docker-php-ext-install -j$(nproc) ldap \
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
&& docker-php-ext-install imap \
&& docker-php-ext-configure bz2 \
&& docker-php-ext-install bz2
RUN mkdir -p /usr/src/php/ext/memcached && \
git clone https://github.com/php-memcached-dev/php-memcached /usr/src/php/ext/memcached && \
docker-php-ext-configure /usr/src/php/ext/memcached --disable-memcached-sasl \
&& docker-php-ext-install /usr/src/php/ext/memcached \
&& rm -rf /usr/src/php/ext/memcached \
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
&& rm -rf /var/lib/apt/lists/*
RUN cd / && apt-get update -y &&\
apt-get install -y --no-install-recommends p7zip-full &&\
git clone https://github.com/highcanfly-club/DoliMods.git && \
cd /DoliMods/build && rm -f makepack-FacturX.conf makepack-Verifystock.conf && echo "all" | perl makepack-dolibarrmodule.pl && \
mkdir /custom && for ZIP in *.zip; do 7z x -y -o/custom $ZIP; done
# Get Dolibarr
FROM php:8.3-apache
LABEL maintainer="Ronan <ronan.le_meillat@ismo-group.co.uk>"
COPY --from=builder /usr/local/etc/php/conf.d /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/lib/php/extensions /usr/local/lib/php/extensions/
COPY --from=busyboxbuilder /busybox-1.37.0/_install/bin/busybox /bin/busybox
ENV DOLI_VERSION 20.0.3
ENV DOLI_INSTALL_AUTO 1
ENV DOLI_DB_TYPE mysqli
ENV DOLI_DB_HOST mysql
ENV DOLI_DB_HOST_PORT 3306
ENV DOLI_URL_ROOT 'http://localhost'
ENV DOLI_NOCSRFCHECK 0
ENV DOLI_AUTH dolibarr
ENV DOLI_LDAP_HOST 127.0.0.1
ENV DOLI_LDAP_PORT 389
ENV DOLI_LDAP_VERSION 3
ENV DOLI_LDAP_SERVER_TYPE openldap
ENV DOLI_LDAP_LOGIN_ATTRIBUTE uid
ENV DOLI_LDAP_DN 'ou=users,dc=my-domain,dc=com'
ENV DOLI_LDAP_FILTER ''
ENV DOLI_LDAP_BIND_DN ''
ENV DOLI_LDAP_BIND_PASS ''
ENV DOLI_LDAP_DEBUG false
ENV DOLI_CRON 0
ENV WWW_USER_ID 33
ENV WWW_GROUP_ID 33
ENV PHP_INI_DATE_TIMEZONE 'UTC'
ENV PHP_INI_MEMORY_LIMIT 256M
RUN echo "Run for $TARGETARCH" && \
if [[ "$TARGETARCH" == "amd64" ]] ; then \
apt-get update -y \
&& apt-get dist-upgrade -y \
&& apt-get install -y --no-install-recommends && \
curl -fLSs https://repo.mysql.com/mysql-apt-config_0.8.33-1_all.deb > /tmp/mysql-apt-config_0.8.33-1_all.deb && \
DEBIAN_FRONTEND=noninteractive dpkg -i /tmp/mysql-apt-config_0.8.33-1_all.deb && \
apt-get update -y &&\
apt-get install -y --no-install-recommends mysql-client lsb-release wget gnupg xz-utils ; \
else \
apt-get update -y &&\
apt-get install -y --no-install-recommends default-mysql-client xz-utils ; \
fi
RUN apt-get update -y \
&& apt-get dist-upgrade -y \
&& apt-get install -y --no-install-recommends \
curl cron libzip4 libc-client2007e postgresql-client libpng16-16 \
libjpeg62-turbo libfreetype6 vim libmemcached11
COPY docker-run.sh /usr/local/bin/
COPY autobackup /usr/local/bin/
COPY --chmod=0755 upgrade-helper.sh /upgrade-helper.sh
RUN mkdir -p /var/www/dolidock/html/custom && \
# curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
curl -fLSs https://sourceforge.net/projects/dolibarr/files/Dolibarr%20ERP-CRM/${DOLI_VERSION}/dolibarr-${DOLI_VERSION}.tgz/download |\
tar -C /tmp -xz && \
cp -r /tmp/dolibarr-${DOLI_VERSION}/htdocs/* /var/www/dolidock/html/ && \
cp -r /tmp/dolibarr-${DOLI_VERSION}/scripts /var/www/ && \
rm -rf /tmp/* && \
chown -R www-data:www-data /var/www && \
chmod ugo+x /usr/local/bin/docker-run.sh && \
chmod ugo+x /usr/local/bin/autobackup && \
ln -svf /bin/busybox /usr/sbin/sendmail
RUN a2dissite 000-default &&\
echo "<VirtualHost *:80>" >> /etc/apache2/sites-available/dolibarr.conf &&\
echo "ServerAdmin webmaster@localhost" >> /etc/apache2/sites-available/dolibarr.conf &&\
echo "DocumentRoot /var/www/dolidock/html" >> /etc/apache2/sites-available/dolibarr.conf &&\
echo "ErrorLog ${APACHE_LOG_DIR}/error.log" >> /etc/apache2/sites-available/dolibarr.conf &&\
echo "CustomLog ${APACHE_LOG_DIR}/access.log combined" >> /etc/apache2/sites-available/dolibarr.conf &&\
echo "php_value error_reporting 0" >> /etc/apache2/sites-available/dolibarr.conf &&\
echo "php_value session.save_path /var/www/dolidock/documents/sessions" >> /etc/apache2/sites-available/dolibarr.conf &&\
echo "</VirtualHost>" >> /etc/apache2/sites-available/dolibarr.conf &&\
a2ensite dolibarr
#COPY patchs/fileconf-enable-dot-in-db-name.diff /var/www/dolidock/
COPY patchs/bug-mod-user-unavailable.diff /var/www/dolidock/
COPY patchs/pgsql-enable-ssl.diff /var/www/dolidock/
#COPY patchs/bug-fk-soc-tier.diff /var/www/dolidock/
COPY patchs/bug-margin-pdf.diff /var/www/dolidock/
COPY patchs/bug-saphir.diff /var/www/dolidock/
RUN cd /var/www/dolidock/ &&\
#patch --fuzz=12 -p0 < fileconf-enable-dot-in-db-name.diff &&\
patch --fuzz=12 -p0 < bug-mod-user-unavailable.diff &&\
patch --fuzz=12 -p0 < pgsql-enable-ssl.diff &&\
#patch --fuzz=12 -p0 < bug-fk-soc-tier.diff &&\
patch --fuzz=12 -p0 < bug-margin-pdf.diff &&\
rm -f *.diff
COPY --from=builder /custom/htdocs /var/www/dolidock/html/custom/
RUN curl -L https://dl.min.io/client/mc/release/linux-$(dpkg --print-architecture)/mc > /usr/local/bin/mc && chmod +x /usr/local/bin/mc
COPY --chmod=0755 scripts/initfrom-s3.sh /usr/local/bin/initfrom-s3
COPY --chmod=0755 migrate2.sh /usr/local/bin/migrate2
RUN echo ". /usr/local/bin/migrate2" >> /root/.bashrc &&\
chmod +x /root/.bashrc
EXPOSE 80
VOLUME /var/www/dolidock/documents
WORKDIR /var/www/dolidock
ENTRYPOINT ["/usr/local/bin/docker-run.sh"]
CMD ["apache2-foreground"]