1
- # FROM node:20.0.0-alpine as node
2
- FROM node:19.9.0-alpine as node
1
+ FROM node:19.9.0-alpine AS node
3
2
4
- FROM php:8.1.22-fpm-alpine3.16 as base
5
-
6
- # Setup Working Dir
7
- WORKDIR /var/www
3
+ # Base image with PHP-FPM
4
+ # FROM php:8.1.22-fpm-alpine3.16 AS base
5
+ FROM php:8.1.28-fpm-alpine3.18 AS base
8
6
9
7
# Musl for adding locales
10
- ENV MUSL_LOCALE_DEPS cmake make musl-dev gcc gettext-dev libintl
11
- ENV MUSL_LOCPATH /usr/share/i18n/locales/musl
8
+ ENV MUSL_LOCALE_DEPS= " cmake make musl-dev gcc gettext-dev libintl"
9
+ ENV MUSL_LOCPATH= " /usr/share/i18n/locales/musl"
12
10
13
11
RUN apk add --no-cache \
14
12
$MUSL_LOCALE_DEPS \
@@ -20,8 +18,8 @@ RUN apk add --no-cache \
20
18
21
19
# Add Repositories
22
20
RUN rm -f /etc/apk/repositories &&\
23
- echo "http://dl-cdn.alpinelinux.org/alpine/v3.13 /main" >> /etc/apk/repositories && \
24
- echo "http://dl-cdn.alpinelinux.org/alpine/v3.13 /community" >> /etc/apk/repositories
21
+ echo "http://dl-cdn.alpinelinux.org/alpine/v3.18 /main" >> /etc/apk/repositories && \
22
+ echo "http://dl-cdn.alpinelinux.org/alpine/v3.18 /community" >> /etc/apk/repositories
25
23
26
24
# Add Build Dependencies
27
25
RUN apk update && apk add --no-cache --virtual .build-deps \
@@ -90,36 +88,59 @@ RUN docker-php-ext-configure \
90
88
xsl \
91
89
&& docker-php-ext-enable \
92
90
imagick \
93
- redis && \
94
- chown www-data:www-data /usr/sbin/crond && \
95
- setcap cap_setgid=ep /usr/sbin/crond
96
-
97
- COPY ./config/php.ini $PHP_INI_DIR/conf.d/
98
-
99
- # Setup config for supervisor nginx php-fpm crontabs
100
- RUN mkdir /etc/supervisor.d
101
- COPY ./config/supervisord-master.ini /etc/supervisor.d/master.ini
102
- COPY ./config/supervisord.conf /etc/
103
-
104
- RUN mkdir /var/log/supervisor/
105
- RUN touch /var/log/supervisor/supervisord.log
106
- RUN chown -R www-data:www-data /var/log/supervisor/
107
-
108
- COPY ./config/nginx-default.conf /etc/nginx/conf.d/default.conf
91
+ redis
92
+
93
+ # Create necessary directories and set permissions
94
+ RUN mkdir -p /var/run/nginx \
95
+ && mkdir -p /var/run/php-fpm \
96
+ && mkdir -p /var/run/supervisor \
97
+ && mkdir -p /var/log/nginx \
98
+ && mkdir -p /var/log/supervisor \
99
+ && mkdir -p /var/log/php-fpm \
100
+ && chown -R www-data:www-data /var/run/nginx \
101
+ && chown -R www-data:www-data /var/run/php-fpm \
102
+ && chown -R www-data:www-data /var/run/supervisor \
103
+ && chown -R www-data:www-data /var/log/nginx \
104
+ && chown -R www-data:www-data /var/log/supervisor \
105
+ && chown -R www-data:www-data /var/log/php-fpm \
106
+ && chown -R www-data:www-data /etc/nginx \
107
+ && chown -R www-data:www-data /usr/sbin/nginx \
108
+ && chown -R www-data:www-data /usr/local/sbin/php-fpm \
109
+ && chown -R www-data:www-data /usr/local/etc/php-fpm.conf \
110
+ && touch /var/log/php-fpm/php-fpm.log \
111
+ && chown www-data:www-data /var/log/php-fpm/php-fpm.log \
112
+ && mkdir -p /run \
113
+ && chown www-data:www-data /run
114
+
115
+ # Ensure cron directories exist and have correct permissions
116
+ RUN mkdir -p /etc/cron.d \
117
+ && mkdir -p /etc/periodic \
118
+ && touch /etc/crontabs/www-data \
119
+ && chmod 755 /etc/cron.d \
120
+ && chmod 755 /etc/periodic \
121
+ && chown www-data:www-data /etc/cron.d \
122
+ && chown www-data:www-data /etc/periodic \
123
+ && chown www-data:www-data /etc/crontabs \
124
+ && chmod 755 /usr/sbin/crond \
125
+ && chown www-data:www-data /usr/sbin/crond \
126
+ && setcap cap_setgid=ep /usr/sbin/crond
127
+
128
+ # Copy Nginx and Supervisor configuration files
109
129
COPY ./config/nginx.conf /etc/nginx/nginx.conf
130
+ COPY ./config/nginx-default.conf /etc/nginx/conf.d/default.conf
110
131
111
- COPY ./ config/php-fpm.conf /usr/local/etc/php-fpm.conf.d/www.conf
112
- COPY ./config/php-fpm .conf /usr/local/ etc/php-fpm.d/www .conf
113
- COPY ./config/php-fpm-docker.conf /usr/local/ etc/php-fpm .d/docker.conf
132
+ # Copy Supervisor config files
133
+ COPY ./config/supervisord .conf /etc/supervisord .conf
134
+ COPY ./config/supervisord-master.ini / etc/supervisor .d/master.ini
114
135
115
- RUN chmod 755 -R /etc/supervisor.d/ /etc/supervisord.conf /etc/nginx/ /etc/crontabs/
136
+ # Copy custom PHP-FPM configuration
137
+ COPY ./config/php-fpm.conf /usr/local/etc/php-fpm.conf
116
138
117
- # Remove Build Dependencies
118
- RUN apk del -f .build-deps
139
+ # Copy PHP configuration
140
+ COPY ./config/php.ini /usr/local/etc/php/php.ini
119
141
120
- RUN mkdir -p /var/lib/nginx/tmp /var/log/nginx \
121
- && chown -R www-data:www-data /var/lib/nginx /var/log/nginx \
122
- && chmod -R 755 /var/lib/nginx /var/log/nginx
142
+ # Set permissions
143
+ RUN chown -R www-data:www-data /var/lib/nginx /var/log/nginx /run/nginx /var/log/supervisor /var/run
123
144
124
145
# Add non root user to the tty group, so we can write to stdout and stderr
125
146
RUN addgroup www-data tty
@@ -140,6 +161,17 @@ COPY --from=node /usr/local/bin /usr/local/bin
140
161
# More info here : https://stackoverflow.com/questions/69417926/docker-error-eacces-permission-denied-mkdir
141
162
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
142
163
164
+ # Remove Build Dependencies
165
+ RUN apk del -f .build-deps
166
+
167
+ # Setup Working Dir
168
+ WORKDIR /var/www
169
+
170
+ # Switch to www-data user to run services
143
171
USER www-data
144
172
145
- CMD ["/usr/bin/supervisord" ]
173
+ # Expose ports
174
+ EXPOSE 8080
175
+
176
+ # Command to run supervisord
177
+ CMD ["supervisord" , "-c" , "/etc/supervisord.conf" ]
0 commit comments