Update php version, fix permission issue

This commit is contained in:
2024-01-06 12:15:51 +01:00
parent 5badbd3c99
commit 800c42b038
18 changed files with 125 additions and 118 deletions

2
.gitignore vendored
View File

@@ -1,2 +1,2 @@
/.history /.history
laravel laravel

View File

@@ -52,7 +52,8 @@ services:
php-fpm: php-fpm:
image: jkaninda/laravel-php-fpm:latest image: jkaninda/laravel-php-fpm:latest
container_name: php-fpm container_name: php-fpm
restart: unless-stopped restart: unless-stopped
user: www-data #Use www-data user production usage
volumes: volumes:
#Project root #Project root
- ./:/var/www/html - ./:/var/www/html

View File

@@ -11,7 +11,7 @@ then
docker build -f src/docker/${tag}/Dockerfile -t jkaninda/laravel-php-fpm:$tag . docker build -f src/docker/${tag}/Dockerfile -t jkaninda/laravel-php-fpm:$tag .
else else
echo 'Build latest' echo 'Build latest'
docker build -f src/docker/8.2/Dockerfile -t jkaninda/laravel-php-fpm:$tag . docker build -f src/docker/8.3/Dockerfile -t jkaninda/laravel-php-fpm:$tag .
fi fi

View File

@@ -1,29 +0,0 @@
version: '3'
services:
php-fpm:
image: jkaninda/laravel-php-fpm:8.3
container_name: php-fpm
restart: unless-stopped
volumes:
#Project root
- ./laravel:/var/www/html
networks:
- web #if you're using networks between containers
#Nginx server
nginx-server:
image: jkaninda/nginx-fpm:alpine
container_name: nginx-server
restart: unless-stopped
ports:
- 80:80
volumes:
- ./laravel:/var/www/html
environment:
- DOCUMENT_ROOT=/var/www/html/public
- CLIENT_MAX_BODY_SIZE=20M
- PHP_FPM_HOST=php-fpm:9000
networks:
- web
networks:
web:
external: false

View File

@@ -3,7 +3,8 @@ services:
php-fpm: php-fpm:
image: jkaninda/laravel-php-fpm image: jkaninda/laravel-php-fpm
container_name: php-fpm container_name: php-fpm
restart: unless-stopped restart: unless-stopped
user: www-data #Use www-data user production usage
volumes: volumes:
#Project root #Project root
- ./:/var/www/html - ./:/var/www/html

View File

@@ -3,6 +3,10 @@ ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ENV NODE_VERSION=16.x ENV NODE_VERSION=16.x
ARG GROUP_ID=1000
ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install system dependencies # Install system dependencies
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git \ git \
@@ -83,12 +87,12 @@ RUN ln -s /usr/local/bin/entrypoint.sh /
ENTRYPOINT ["entrypoint.sh"] ENTRYPOINT ["entrypoint.sh"]
RUN usermod -u ${USER_ID} ${USER_NAME}
RUN groupmod -g ${USER_ID} ${GROUP_NAME}
RUN usermod -u 1000 www-data RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \
RUN groupmod -g 1000 www-data chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \
chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \
RUN chmod -R 755 $WORKDIR chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/
RUN chown -R www-data:www-data $WORKDIR
EXPOSE 9000 EXPOSE 9000
CMD [ "entrypoint" ] CMD [ "entrypoint" ]

View File

@@ -3,6 +3,10 @@ ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ENV NODE_VERSION=16.x ENV NODE_VERSION=16.x
ARG GROUP_ID=1000
ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install system dependencies # Install system dependencies
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git \ git \
@@ -83,12 +87,12 @@ RUN ln -s /usr/local/bin/entrypoint.sh /
ENTRYPOINT ["entrypoint.sh"] ENTRYPOINT ["entrypoint.sh"]
RUN usermod -u ${USER_ID} ${USER_NAME}
RUN groupmod -g ${USER_ID} ${GROUP_NAME}
RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \
chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \
chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \
chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/
RUN usermod -u 1000 www-data
RUN groupmod -g 1000 www-data
RUN chmod -R 755 $WORKDIR
RUN chown -R www-data:www-data $WORKDIR
EXPOSE 9000 EXPOSE 9000
CMD [ "entrypoint" ] CMD [ "entrypoint" ]

View File

@@ -3,8 +3,10 @@ ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ENV NODE_VERSION=16.x ENV NODE_VERSION=16.x
ARG HOST_UID=1000 ARG GROUP_ID=1000
ENV USER=www-data ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install system dependencies # Install system dependencies
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git \ git \
@@ -86,12 +88,12 @@ RUN ln -s /usr/local/bin/entrypoint.sh /
ENTRYPOINT ["entrypoint.sh"] ENTRYPOINT ["entrypoint.sh"]
RUN usermod -u ${USER_ID} ${USER_NAME}
RUN groupmod -g ${USER_ID} ${GROUP_NAME}
RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \
chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \
chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \
chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/
RUN usermod -u ${HOST_UID} www-data
RUN groupmod -g ${HOST_UID} www-data
RUN chmod -R 755 $WORKDIR
RUN chown -R www-data:www-data $WORKDIR
EXPOSE 9000 EXPOSE 9000
CMD [ "entrypoint" ] CMD [ "entrypoint" ]

View File

@@ -3,8 +3,10 @@ ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ENV NODE_VERSION=16.x ENV NODE_VERSION=16.x
ARG HOST_UID=1000 ARG GROUP_ID=1000
ENV USER=www-data ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install system dependencies # Install system dependencies
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git \ git \
@@ -86,12 +88,12 @@ RUN ln -s /usr/local/bin/entrypoint.sh /
ENTRYPOINT ["entrypoint.sh"] ENTRYPOINT ["entrypoint.sh"]
RUN usermod -u ${USER_ID} ${USER_NAME}
RUN groupmod -g ${USER_ID} ${GROUP_NAME}
RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \
chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \
chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \
chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/
RUN usermod -u ${HOST_UID} www-data
RUN groupmod -g ${HOST_UID} www-data
RUN chmod -R 755 $WORKDIR
RUN chown -R www-data:www-data $WORKDIR
EXPOSE 9000 EXPOSE 9000
CMD [ "entrypoint" ] CMD [ "entrypoint" ]

View File

@@ -3,8 +3,10 @@ ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ENV NODE_VERSION=17.x ENV NODE_VERSION=17.x
ARG HOST_UID=1000 ARG GROUP_ID=1000
ENV USER=www-data ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install system dependencies # Install system dependencies
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git \ git \
@@ -85,13 +87,15 @@ COPY src/entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh
RUN ln -s /usr/local/bin/entrypoint.sh / RUN ln -s /usr/local/bin/entrypoint.sh /
ENTRYPOINT ["entrypoint.sh"] ENTRYPOINT ["entrypoint.sh"]
RUN usermod -u ${USER_ID} ${USER_NAME}
RUN groupmod -g ${USER_ID} ${GROUP_NAME}
RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \
chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \
chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \
chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/
RUN usermod -u ${HOST_UID} www-data
RUN groupmod -g ${HOST_UID} www-data
RUN chmod -R 755 $WORKDIR
RUN chown -R www-data:www-data $WORKDIR
EXPOSE 9000 EXPOSE 9000
CMD [ "entrypoint" ] CMD [ "entrypoint" ]

View File

@@ -2,8 +2,10 @@ FROM php:8.1-fpm-alpine
ARG WORKDIR=/var/www/html ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ARG HOST_UID=1000 ARG GROUP_ID=1000
ENV USER=www-data ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install the PHP pdo_mysql extention # Install the PHP pdo_mysql extention
RUN docker-php-ext-install pdo_mysql RUN docker-php-ext-install pdo_mysql

View File

@@ -3,8 +3,10 @@ ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ENV NODE_MAJOR=20 ENV NODE_MAJOR=20
ARG HOST_UID=1000 ARG GROUP_ID=1000
ENV USER=www-data ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install system dependencies # Install system dependencies
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git \ git \
@@ -88,12 +90,12 @@ RUN ln -s /usr/local/bin/entrypoint.sh /
ENTRYPOINT ["entrypoint.sh"] ENTRYPOINT ["entrypoint.sh"]
RUN usermod -u ${USER_ID} ${USER_NAME}
RUN groupmod -g ${USER_ID} ${GROUP_NAME}
RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \
chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \
chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \
chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/
RUN usermod -u ${HOST_UID} www-data
RUN groupmod -g ${HOST_UID} www-data
RUN chmod -R 755 $WORKDIR
RUN chown -R www-data:www-data $WORKDIR
EXPOSE 9000 EXPOSE 9000
CMD [ "entrypoint" ] CMD [ "entrypoint" ]

View File

@@ -2,8 +2,10 @@ FROM php:8.2-fpm-alpine
ARG WORKDIR=/var/www/html ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ARG HOST_UID=1000 ARG GROUP_ID=1000
ENV USER=www-data ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install the PHP pdo_mysql extention # Install the PHP pdo_mysql extention
RUN docker-php-ext-install pdo_mysql RUN docker-php-ext-install pdo_mysql

View File

@@ -1,10 +1,12 @@
FROM php:8.3.0-fpm FROM php:8.3.1-fpm
ARG WORKDIR=/var/www/html ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ENV NODE_MAJOR=20 ENV NODE_MAJOR=20
ARG HOST_UID=1000 ARG GROUP_ID=1000
ENV USER=www-data ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install system dependencies # Install system dependencies
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
git \ git \
@@ -86,14 +88,15 @@ COPY src/entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh
RUN ln -s /usr/local/bin/entrypoint.sh / RUN ln -s /usr/local/bin/entrypoint.sh /
ENTRYPOINT ["entrypoint.sh"] ENTRYPOINT ["entrypoint.sh"]
RUN usermod -u ${USER_ID} ${USER_NAME}
RUN groupmod -g ${USER_ID} ${GROUP_NAME}
RUN chown -R ${USER_NAME}:${GROUP_NAME} /var/www && \
chown -R ${USER_NAME}:${GROUP_NAME} /var/log/ && \
chown -R ${USER_NAME}:${GROUP_NAME} /etc/supervisor/conf.d/ && \
chown -R ${USER_NAME}:${GROUP_NAME} $PHP_INI_DIR/conf.d/
RUN usermod -u ${HOST_UID} www-data
RUN groupmod -g ${HOST_UID} www-data
RUN chmod -R 755 $WORKDIR
RUN chown -R www-data:www-data $WORKDIR
EXPOSE 9000 EXPOSE 9000
CMD [ "entrypoint" ] CMD [ "entrypoint" ]

View File

@@ -2,8 +2,10 @@ FROM php:8.3-fpm-alpine
ARG WORKDIR=/var/www/html ARG WORKDIR=/var/www/html
ENV DOCUMENT_ROOT=${WORKDIR} ENV DOCUMENT_ROOT=${WORKDIR}
ENV LARAVEL_PROCS_NUMBER=1 ENV LARAVEL_PROCS_NUMBER=1
ARG HOST_UID=1000 ARG GROUP_ID=1000
ENV USER=www-data ARG USER_ID=1000
ENV USER_NAME=www-data
ARG GROUP_NAME=www-data
# Install the PHP pdo_mysql extention # Install the PHP pdo_mysql extention
RUN docker-php-ext-install pdo_mysql RUN docker-php-ext-install pdo_mysql

View File

@@ -1,16 +1,27 @@
#!/bin/sh #!/bin/bash
Red='\033[0;31m' # Red
Green='\033[0;32m' # Green
echo "" echo ""
echo "***********************************************************" echo "***********************************************************"
echo " Starting LARAVEL PHP-FPM Container " echo " Starting LARAVEL PHP-FPM Container "
echo "***********************************************************" echo "***********************************************************"
set -e set -e
info() {
{ set +x; } 2> /dev/null
echo '[INFO] ' "$@"
}
warning() {
{ set +x; } 2> /dev/null
echo '[WARNING] ' "$@"
}
fatal() {
{ set +x; } 2> /dev/null
echo '[ERROR] ' "$@" >&2
exit 1
}
## Check if the artisan file exists ## Check if the artisan file exists
if [ -f /var/www/html/artisan ]; then if [ -f /var/www/html/artisan ]; then
echo "${Green} artisan file found, creating laravel supervisor config..." info "Artisan file found, creating laravel supervisor config..."
##Create Laravel Scheduler process ##Create Laravel Scheduler process
TASK=/etc/supervisor/conf.d/laravel-worker.conf TASK=/etc/supervisor/conf.d/laravel-worker.conf
touch $TASK touch $TASK
@@ -21,7 +32,7 @@ if [ -f /var/www/html/artisan ]; then
autostart=true autostart=true
autorestart=true autorestart=true
numprocs=1 numprocs=1
user=www-data user=$USER_NAME
stdout_logfile=/var/log/laravel_scheduler.out.log stdout_logfile=/var/log/laravel_scheduler.out.log
redirect_stderr=true redirect_stderr=true
@@ -31,36 +42,32 @@ if [ -f /var/www/html/artisan ]; then
autostart=true autostart=true
autorestart=true autorestart=true
numprocs=$LARAVEL_PROCS_NUMBER numprocs=$LARAVEL_PROCS_NUMBER
user=www-data user=$USER_NAME
redirect_stderr=true redirect_stderr=true
stdout_logfile=/var/log/laravel_worker.log stdout_logfile=/var/log/laravel_worker.log
EOF EOF
echo "${Green} Laravel supervisor config created" info "Laravel supervisor config created"
else else
echo "${Red} artisan file not found" info "artisan file not found"
fi fi
## Check if the supervisor config file exists ## Check if the supervisor config file exists
if [ -f /var/www/html/conf/worker/supervisor.conf ]; then if [ -f /var/www/html/conf/worker/supervisor.conf ]; then
echo "additional supervisor config found" info "additional supervisor config found"
cp /var/www/html/conf/worker/supervisor.conf /etc/supervisor/conf.d/supervisor.conf cp /var/www/html/conf/worker/supervisor.conf /etc/supervisor/conf.d/supervisor.conf
else else
echo "${Red} Supervisor.conf not found" info "Supervisor.conf not found"
echo "${Green} If you want to add more supervisor configs, create config file in /var/www/html/conf/worker/supervisor.conf" info "If you want to add more supervisor configs, create config file in /var/www/html/conf/worker/supervisor.conf"
echo "${Green} Start supervisor with default config..." info "Start supervisor with default config..."
fi fi
## Check if php.ini file exists ## Check if php.ini file exists
if [ -f /var/www/html/conf/php/php.ini ]; then if [ -f /var/www/html/conf/php/php.ini ]; then
cp /var/www/html/conf/php/php.ini $PHP_INI_DIR/conf.d/ cp /var/www/html/conf/php/php.ini $PHP_INI_DIR/conf.d/
echo "Custom php.ini file found and copied in $PHP_INI_DIR/conf.d/" info "Custom php.ini file found and copied in $PHP_INI_DIR/conf.d/"
else else
echo "Custom php.ini file not found" info "Custom php.ini file not found"
echo "If you want to add a custom php.ini file, you add it in /var/www/html/conf/php/php.ini" info "If you want to add a custom php.ini file, you add it in /var/www/html/conf/php/php.ini"
fi fi
echo ""
echo "**********************************"
echo " Starting Supervisord... "
echo "***********************************"
supervisord -c /etc/supervisor/supervisord.conf supervisord -c /etc/supervisor/supervisord.conf
exec "$@"

View File

@@ -1,9 +1,8 @@
[supervisord] [supervisord]
nodaemon=true nodaemon=true
user=root #user=root
user=%(ENV_USER_NAME)s
logfile=/var/log/supervisor/supervisord.log logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
[program:php-fpm] [program:php-fpm]
command=/usr/local/sbin/php-fpm command=/usr/local/sbin/php-fpm
@@ -12,8 +11,8 @@ autostart=true
autorestart=true autorestart=true
stderr_logfile=/var/log/php-fpm_consumer.err.log stderr_logfile=/var/log/php-fpm_consumer.err.log
stdout_logfile=/var/log/php-fpm_consumer.out.log stdout_logfile=/var/log/php-fpm_consumer.out.log
user=root user=www-data
priority=100 priority=1
[include] [include]

View File

@@ -15,6 +15,7 @@ services:
image: jkaninda/laravel-php-fpm:latest image: jkaninda/laravel-php-fpm:latest
container_name: php-fpm container_name: php-fpm
restart: unless-stopped restart: unless-stopped
user: www-data #Use www-data user production usage
depends_on: depends_on:
- mysql - mysql
environment: environment: