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
32
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
86
97# 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"
1210
1311RUN apk add --no-cache \
1412 $MUSL_LOCALE_DEPS \
@@ -20,8 +18,8 @@ RUN apk add --no-cache \
2018
2119# Add Repositories
2220RUN 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
2523
2624# Add Build Dependencies
2725RUN apk update && apk add --no-cache --virtual .build-deps \
@@ -90,36 +88,59 @@ RUN docker-php-ext-configure \
9088 xsl \
9189 && docker-php-ext-enable \
9290 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
109129COPY ./config/nginx.conf /etc/nginx/nginx.conf
130+ COPY ./config/nginx-default.conf /etc/nginx/conf.d/default.conf
110131
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
114135
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
116138
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
119141
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
123144
124145# Add non root user to the tty group, so we can write to stdout and stderr
125146RUN addgroup www-data tty
@@ -140,6 +161,17 @@ COPY --from=node /usr/local/bin /usr/local/bin
140161# More info here : https://stackoverflow.com/questions/69417926/docker-error-eacces-permission-denied-mkdir
141162ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
142163
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
143171USER www-data
144172
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