-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfileApp
executable file
·168 lines (137 loc) · 5.98 KB
/
DockerfileApp
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.2-fpm-bullseye
#Timezone
ENV TZ=Europe/Paris
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV PHP_VERSION=8.2
RUN if [ -f ./deploy_configuration/.env_proxy ]; then \
# Si le fichier source existe, copiez-le
COPY ./deploy_configuration/.env_proxy /; \
fi
COPY ./deploy_configuration/proxy.sh /
RUN chmod +x /proxy.sh
RUN sh /proxy.sh
ARG HTTP_PROXY_CI
ENV http_proxy=$HTTP_PROXY_CI
ENV https_proxy=$HTTP_PROXY_CI
ENV HTTP_PROXY=$HTTP_PROXY_CI
ENV HTTPS_PROXY=$HTTP_PROXY_CI
# Vérifiez si la variable d'environnement http_proxy est définie
RUN if [ -n "$http_proxy" ]; then \
# Si elle est définie, exécutez les commandes pour configurer le proxy
touch /etc/apt/apt.conf.d/05proxy; \
echo 'Acquire::HTTP::Proxy "'$http_proxy'";' >> /etc/apt/apt.conf.d/05proxy; \
echo 'Acquire::HTTPS::Prox "'$http_proxy'";' >> /etc/apt/apt.conf.d/05proxy; \
echo 'Acquire::ftp::Proxy "'$http_proxy'";' >> /etc/apt/apt.conf.d/05proxy; \
echo "Proxy configuré dans le système de packages avec la valeur $http_proxy" && true; \
fi
RUN apt-get update -y
# Deploy configuration & sources
RUN mkdir /var/www/html/smile
WORKDIR /var/www/html/smile/
COPY ./src /var/www/html/smile/
# Préparation des variables d'environnement
COPY ./.env_example /var/www/html/smile
# AWS configuration
ARG AWS_ACCESS_KEY_ID
ARG AWS_SECRET_ACCESS_KEY
ENV AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
ENV AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
RUN mkdir -p /var/www/.aws
RUN echo "[default]" >> /var/www/.aws/credentials
RUN echo "aws_access_key_id=$AWS_ACCESS_KEY_ID" >> /var/www/.aws/credentials
RUN echo "aws_secret_access_key=$AWS_SECRET_ACCESS_KEY" >> /var/www/.aws/credentials
RUN echo "[smile-backup]" >> /var/www/.aws/credentials
RUN echo "aws_access_key_id=$AWS_ACCESS_KEY_ID" >> /var/www/.aws/credentials
RUN echo "aws_secret_access_key=$AWS_SECRET_ACCESS_KEY" >> /var/www/.aws/credentials
# Répertoires de travail de Doctrine
RUN mkdir -p data/cache
RUN mkdir -p data/DoctrineModule/cache
RUN mkdir -p data/DoctrineORMModule/Proxy
RUN chmod -R 777 data
# Prepare packages management
RUN rm -f /etc/apt/preferences.d/no-debian-php
RUN apt-get update -y
RUN apt-get install -y git libc6 wget gnupg2 apt-transport-https lsb-release ca-certificates
RUN apt-get -qq update
RUN apt-get -y install apt-transport-https lsb-release ca-certificates curl
RUN curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
RUN sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
RUN wget -e use_proxy=on -e https_proxy=$HTTP_PROXY --no-check-certificate -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
RUN echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
RUN apt-get upgrade -y
RUN apt-get update -y
# Install extensions & packages
RUN docker-php-ext-install bcmath
RUN apt-get update && \
apt-get install -y \
zlib1g-dev libpng-dev
RUN docker-php-ext-install gd
RUN docker-php-ext-install gettext
RUN docker-php-ext-install iconv
RUN apt-get install -y libicu-dev && docker-php-ext-configure intl
RUN docker-php-ext-install intl
RUN apt-get install -y libldap2-dev
RUN docker-php-ext-install ldap
RUN docker-php-ext-install opcache
RUN apt-get install -y libpq-dev
RUN docker-php-ext-install pgsql
RUN docker-php-ext-install pdo
RUN docker-php-ext-install pdo_pgsql
RUN docker-php-ext-enable pdo_pgsql
RUN docker-php-ext-configure pgsql
RUN apt-get install -y libxml2-dev
RUN docker-php-ext-install soap
RUN docker-php-ext-install xml
RUN apt-get install -y libzip-dev
RUN docker-php-ext-install zip
# Prepare PHP
RUN apt-get install -y libz-dev libmemcached-dev && \
apt-get install -y memcached libmemcached-tools
# XDebug from source for dev
# Clonez le dépôt Xdebug depuis GitHub
#RUN git clone https://github.com/xdebug/xdebug.git /tmp/xdebug
#RUN docker-php-ext-install xdebug
RUN apt-get install php${PHP_VERSION}-xdebug -y
#RUN docker-php-ext-enable php-xdebug
# Compilez et installez Xdebug
#RUN cd /tmp/xdebug && \
# phpize && \
# ./configure --enable-xdebug && \
# make && \
# make install
RUN rm /usr/local/etc/php-fpm.conf
RUN rm /usr/local/etc/php-fpm.d/www.conf
# Build smile-app
# Install composer
RUN curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
RUN HASH=`curl -sS https://composer.github.io/installer.sig`
RUN echo $HASH
RUN php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=2.2.22
# Build Smile
WORKDIR /var/www/html/smile/
RUN composer install --no-dev --no-suggest --optimize-autoloader
RUN composer install
ENV COMPOSER_ALLOW_SUPERUSER=1
# For cron
RUN apt-get install -y cron
# For run cron + php
RUN apt-get install -y supervisor
RUN mkdir -p data/cache && chmod -R 777 data/cache
RUN mkdir -p data/DoctrineModule/cache && chmod -R 777 data/DoctrineModule/cache
RUN mkdir -p data/DoctrineORMModule/Proxy && chmod -R 777 data/DoctrineORMModule/Proxy
RUN rm -rf data/cache/*
RUN rm -rf data/DoctrineModule/cache/*
RUN rm -rf data/DoctrineORMModule/Proxy/*
ENV HTTP_PROXY ""
ENV HTTPS_PROXY ""
ENV http_proxy ""
ENV https_proxy ""
RUN rm -f /etc/apt/apt.conf.d/05proxy
RUN chown -R www-data:www-data /var/www/html/smile/
ENV COMPOSER_ALLOW_SUPERUSER=0
# Execution de la synchro offre de formation tous les jours à 23H avec une redirection des longs de la task dans /var/log/crontab.logs
# Peut être s'assuré que le script cible à les bons droits (chmod u+x)
RUN echo "0 23 * * * root cd /var/www/html/smile && php bin/console app:import-data >> /var/log/crontab.logs" >> /etc/crontab
COPY ./deploy_configuration/php/supervisord.conf /supervisord.conf
RUN chown www-data:www-data generate_env.sh