docker env is working

This commit is contained in:
2024-06-18 15:03:29 +02:00
commit 7390c5d9be
26 changed files with 1155 additions and 0 deletions

72
Docker/api/Dockerfile Normal file
View File

@@ -0,0 +1,72 @@
FROM php:8.2-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
mariadb-client \
zip \
libzip-dev
# docker-php-ext-install -j$(nproc) iconv && \
RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ && \
apt-get install -y imagemagick libmagickwand-dev && \
pecl install imagick && docker-php-ext-enable imagick && \
docker-php-ext-install -j$(nproc) gd && \
docker-php-ext-install pdo_mysql zip && \
docker-php-ext-install opcache && \
docker-php-ext-install bcmath && \
apt-get install -y git vim
RUN pecl install redis-5.3.7 && \
pecl install xdebug-3.3.2 && \
docker-php-ext-enable redis xdebug
RUN export COMPOSER_HOME=/usr/local/composer && \
curl -sS https://getcomposer.org/installer \
| php -- --install-dir=/usr/local/bin --filename=composer && \
curl https://drupalconsole.com/installer \
-L -o /usr/local/bin/drupal && \
chmod +x /usr/local/bin/drupal && \
curl https://github.com/drush-ops/drush-launcher/releases/download/0.6.0/drush.phar \
-L -o /usr/local/bin/drush && \
chmod +x /usr/local/bin/drush
# TODO depecrated https://github.com/nodesource/distributions
# RUN apt-get install -y curl && \
# curl -sL https://deb.nodesource.com/setup_11.x | bash - && \
# curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
# echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
# apt-get update && \
# apt-get install -y nodejs yarn
RUN apt-get install -y rsyslog
COPY ./rsyslog-drupal.conf /etc/rsyslog.d/drupal.conf
# ENTRYPOINT ["sh", "-c", "service rsyslog start ; tail -f /dev/null"]
COPY ./php-custom.ini /usr/local/etc/php/conf.d/php-custom.ini
# COPY ./php-fpm-custom.conf /usr/local/etc/php-fpm.d/php-fpm-custom.conf
# COPY ./bashrc /root/.bashrc
# COPY ./inputrc /root/.inputrc
ARG USER_UID
ARG USER_UNAME
ARG USER_GID
ARG USER_GNAME
RUN if getent group ${USER_GNAME} ; then groupdel ${USER_GNAME}; fi &&\
groupadd -g ${USER_GID} ${USER_GNAME} &&\
useradd -l -u ${USER_UID} -g ${USER_GNAME} ${USER_UNAME} &&\
install -d -m 0755 -o ${USER_UNAME} -g ${USER_GNAME} /home/${USER_UNAME} &&\
chown --changes --silent --no-dereference --recursive \
--from=33:33 ${USER_UID}:${USER_GID} \
/home/${USER_UNAME}
# /.composer \
# /var/run/php-fpm \
# /var/lib/php/sessions \
COPY ./bashrc /home/${USER_UNAME}/.bashrc
COPY ./inputrc /home/${USER_UNAME}/.inputrc
USER ${USER_UNAME}

4
Docker/api/bashrc Normal file
View File

@@ -0,0 +1,4 @@
PS1='\e[36m\e[1mPHP-8.1\e[0m:\e[90m\w\e[0m\n$ '
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

2
Docker/api/inputrc Normal file
View File

@@ -0,0 +1,2 @@
set show-all-if-ambiguous on
set completion-ignore-case on

View File

@@ -0,0 +1,9 @@
memory_limit = 8192M
upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 150
; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
log_level = debug

View File

@@ -0,0 +1 @@
request_terminate_timeout = 150

View File

@@ -0,0 +1 @@
local6.* /var/log/drupal.log

View File

@@ -0,0 +1,17 @@
[Unit]
Description=rsyslog
After=docker.service
Requires=docker.service
[Service]
ExecStartPre=-/usr/bin/docker rm %n
ExecStart=/usr/bin/docker run --rm \
--name %n \
-h %H \
jumanjiman/rsyslog
ExecStop=/usr/bin/docker stop %n
RestartSec=5s
Restart=always
[Install]
WantedBy=multi-user.target

39
Docker/app/Dockerfile Normal file
View File

@@ -0,0 +1,39 @@
FROM node:lts-bullseye
# THE ALL USER THINGS IS USELESS AS NODE IS ALREADY A USER @ 1000
# RUN find / -group 1000 -exec chgrp -h node {} \;
# RUN find / -user 1000 -exec chown -h node {} \;
# ARG USER_UID
# ARG USER_UNAME
# ARG USER_GID
# ARG USER_GNAME
# # RUN addgroup -g 1000 gdp && \
# # adduser -h /home/gdp -D -u 1000 gdp && \
# RUN adduser -u ${USER_UID} -G users -s /bin/sh -D ${USER_UNAME}
# # chown -R gdp:gdp /home/gdp
# RUN if getent group ${USER_GNAME} ; then groupdel ${USER_GNAME}; fi
# RUN groupadd -g ${USER_GID} ${USER_GNAME}
# RUN useradd -l -u ${USER_UID} -g ${USER_GNAME} ${USER_UNAME}
# RUN install -d -m 0755 -o ${USER_UNAME} -g ${USER_GNAME} /home/${USER_UNAME}
# RUN chown --changes --silent --no-dereference --recursive \
# --from=33:33 ${USER_UID}:${USER_GID} \
# /home/${USER_UNAME}
# USER ${USER_UNAME}
# COPY ./bashrc /home/${USER_UNAME}/.bashrc
# COPY ./inputrc /home/${USER_UNAME}/.inputrc
# COPY ./bashrc /home/node/.bashrc # should do an echo in already existing /home/node/.bashcr
COPY ./inputrc /home/node/.inputrc
COPY ./client-entrypoint.sh /usr/local/bin
# USER root
RUN chmod +x /usr/local/bin/client-entrypoint.sh
# USER ${USER_UNAME}
CMD ["/bin/sh","/usr/local/bin/client-entrypoint.sh"]

3
Docker/app/bashrc Normal file
View File

@@ -0,0 +1,3 @@
PS1='\e[36m\e[1mNODE\e[0m:\e[90m\w\e[0m\n$ '
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

View File

@@ -0,0 +1,30 @@
#!/bin/sh
cat /etc/passwd|grep 1000
cd /app
echo "Cleaning node_modules"
rm -rf node_modules
echo "Cleaning npm cache"
npm cache clean --f
echo "Npm install"
npm install
# echo "Npm init"
# npm ci
# echo "Run npm dev"
# npm run dev
echo "APP_ENV $APP_ENV"
if [ "$APP_ENV" = "prod" ]; then
echo "Run npm prod"
npm run build
else
echo "Run npm dev"
npm run dev
fi

2
Docker/app/inputrc Normal file
View File

@@ -0,0 +1,2 @@
set show-all-if-ambiguous on
set completion-ignore-case on

4
Docker/mysql/bashrc Normal file
View File

@@ -0,0 +1,4 @@
PS1='\e[36m\e[1mMYSQL\e[0m:\e[90m\w\e[0m\n$ '
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

12
Docker/mysql/mysql.cnf Normal file
View File

@@ -0,0 +1,12 @@
[client]
default-character-set=utf8
[mysqld]
max_allowed_packet=500M
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
[mysql]
default-character-set=utf8

9
Docker/nginx/Dockerfile Normal file
View File

@@ -0,0 +1,9 @@
FROM nginx:latest
RUN apt-get update \
&& apt-get install -y \
vim
COPY ./default.conf /etc/nginx/conf.d/default.conf
COPY ./bashrc /root/.bashrc
COPY ./inputrc /root/.inputrc

3
Docker/nginx/bashrc Normal file
View File

@@ -0,0 +1,3 @@
PS1='\e[36m\e[1mNGINX\e[0m:\e[90m\w\e[0m\n$ '
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

84
Docker/nginx/default.conf Normal file
View File

@@ -0,0 +1,84 @@
upstream app{
server app:5173;
}
server {
listen 80 default_server;
# root /var/www/html/api/src/web;
# root /var/www/html/app/dist;
index index.html index.php;
server_name *.caravane.fr;
charset utf-8;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Ssl on;
proxy_cache off;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://app;
proxy_redirect off;
}
# https://serversforhackers.com/c/nginx-php-in-subdirectory
location @api {
rewrite ^/api/(.*)$ /api/index.php;
}
location /api {
# rewrite /api/(.*)$ /$1 break;
# root /var/www/html/api/src/web;
alias /var/www/html/api/src/web/;
# index index.php;
# try_files $uri $uri/ /index.php?$query_string;
try_files $uri $uri/ @api;
error_log /var/log/nginx/api-error.log debug;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass api:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors off;
fastcgi_buffers 16 32k;
fastcgi_buffer_size 64k;
fastcgi_busy_buffers_size 64k;
fastcgi_read_timeout 150;
}
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log on;
error_log /var/log/nginx/app-error.log error;
sendfile off;
client_max_body_size 100m;
# location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# fastcgi_pass api:9000;
# fastcgi_index index.php;
# include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_intercept_errors off;
# fastcgi_buffer_size 16k;
# fastcgi_buffers 4 16k;
# fastcgi_read_timeout 150;
# }
location ~ /\.ht {
deny all;
}
}

2
Docker/nginx/inputrc Normal file
View File

@@ -0,0 +1,2 @@
set show-all-if-ambiguous on
set completion-ignore-case on