docker setup
This commit is contained in:
Generated
+10
@@ -0,0 +1,10 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Ignored default folder with query files
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/nexus.iml" filepath="$PROJECT_DIR$/.idea/nexus.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
Generated
+19
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MessDetectorOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PHPCSFixerOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PHPCodeSnifferOptionsConfiguration">
|
||||||
|
<option name="highlightLevel" value="WARNING" />
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PhpStanOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PsalmOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
services:
|
||||||
|
nexus-app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/Dockerfile
|
||||||
|
args:
|
||||||
|
UID: 1000
|
||||||
|
GID: 1000
|
||||||
|
networks:
|
||||||
|
- dev-local
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html # Dein Code
|
||||||
|
|
||||||
|
nexus-nginx:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/Dockerfile.nginx
|
||||||
|
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.nexus.rule=Host(`nexus.local`)"
|
||||||
|
- "traefik.http.routers.nexus.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nexus.tls=true"
|
||||||
|
- "traefik.http.services.nexus.loadbalancer.server.port=80"
|
||||||
|
|
||||||
|
- "traefik.http.routers.nexus-http.rule=Host(`nexus.local`)"
|
||||||
|
- "traefik.http.routers.nexus-http.entrypoints=web"
|
||||||
|
- "traefik.http.routers.nexus-http.middlewares=redirect-to-https"
|
||||||
|
|
||||||
|
# Middleware definieren
|
||||||
|
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
|
||||||
|
networks:
|
||||||
|
- dev-local
|
||||||
|
depends_on:
|
||||||
|
- nexus-app
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html # Dein Code
|
||||||
|
- ./docker/ssl/:/etc/nginx/certs
|
||||||
|
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
|
||||||
|
nexus-frontend:
|
||||||
|
image: node:latest
|
||||||
|
container_name: nexus-frontend
|
||||||
|
working_dir: /var/www/html
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html
|
||||||
|
command: >
|
||||||
|
sh -c "
|
||||||
|
while true; do
|
||||||
|
npm run build
|
||||||
|
echo 'Vite Dev-Server beendet. Neustart in 3 Sekunden...'
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
- dev-local
|
||||||
|
|
||||||
|
networks:
|
||||||
|
dev-local:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
services:
|
||||||
|
nexus-app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/Dockerfile
|
||||||
|
args:
|
||||||
|
UID: 1000
|
||||||
|
GID: 1000
|
||||||
|
networks:
|
||||||
|
- dev-local
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html # Dein Code
|
||||||
|
|
||||||
|
nexus-nginx:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/Dockerfile.nginx
|
||||||
|
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.nexus.rule=Host(`nexus.local`)"
|
||||||
|
- "traefik.http.routers.nexus.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.nexus.tls=true"
|
||||||
|
- "traefik.http.services.nexus.loadbalancer.server.port=80"
|
||||||
|
|
||||||
|
- "traefik.http.routers.nexus-http.rule=Host(`nexus.local`)"
|
||||||
|
- "traefik.http.routers.nexus-http.entrypoints=web"
|
||||||
|
- "traefik.http.routers.nexus-http.middlewares=redirect-to-https"
|
||||||
|
|
||||||
|
# Middleware definieren
|
||||||
|
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
|
||||||
|
networks:
|
||||||
|
- dev-local
|
||||||
|
depends_on:
|
||||||
|
- nexus-app
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html # Dein Code
|
||||||
|
- ./docker/ssl/:/etc/nginx/certs
|
||||||
|
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
|
||||||
|
nexus-frontend:
|
||||||
|
image: node:latest
|
||||||
|
container_name: nexus-frontend
|
||||||
|
working_dir: /var/www/html
|
||||||
|
volumes:
|
||||||
|
- ./:/var/www/html
|
||||||
|
command: >
|
||||||
|
sh -c "
|
||||||
|
while true; do
|
||||||
|
npm run build
|
||||||
|
echo 'Vite Dev-Server beendet. Neustart in 3 Sekunden...'
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
- dev-local
|
||||||
|
|
||||||
|
networks:
|
||||||
|
dev-local:
|
||||||
|
external: true
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
FROM php:8.5-fpm-trixie
|
||||||
|
|
||||||
|
ARG UID=1000
|
||||||
|
ARG GID=1000
|
||||||
|
ENV USER=development
|
||||||
|
ENV GROUPNAME=$USER
|
||||||
|
|
||||||
|
RUN groupadd -g ${GID} development \
|
||||||
|
&& useradd -u ${UID} -g development -m development
|
||||||
|
|
||||||
|
# Nginx + Supervisor installieren
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y nginx \
|
||||||
|
supervisor \
|
||||||
|
bash \
|
||||||
|
mc \
|
||||||
|
git \
|
||||||
|
unzip \
|
||||||
|
libzip-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libonig-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libmagickwand-dev \
|
||||||
|
imagemagick \
|
||||||
|
&& pecl install imagick \
|
||||||
|
&& docker-php-ext-enable imagick
|
||||||
|
|
||||||
|
#&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
RUN mkdir -p /run/nginx
|
||||||
|
|
||||||
|
RUN docker-php-ext-install mysqli pdo pdo_mysql mbstring zip exif pcntl gd
|
||||||
|
|
||||||
|
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
|
||||||
|
&& apt-get install -y nodejs
|
||||||
|
|
||||||
|
COPY /docker/php/composer.phar /usr/bin/composer
|
||||||
|
|
||||||
|
# Arbeitsverzeichnis
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
# Volumes für persistente Daten
|
||||||
|
VOLUME ["/var/www/html"]
|
||||||
|
|
||||||
|
# Ports
|
||||||
|
EXPOSE 9000
|
||||||
|
|
||||||
|
# Start PHP-FPM + Nginx
|
||||||
|
CMD ["sh", "-c", "php-fpm -D && nginx -g 'daemon off;'"]
|
||||||
|
|
||||||
|
RUN chown -R development:development /var/www
|
||||||
|
|
||||||
|
USER development
|
||||||
|
|
||||||
|
# PHP-FPM läuft automatisch auf Port 9000
|
||||||
|
EXPOSE 9000
|
||||||
|
CMD ["php-fpm"]
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
FROM nginx:latest
|
||||||
|
|
||||||
|
WORKDIR /etc/nginx
|
||||||
|
|
||||||
|
COPY /docker/nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||||
|
|
||||||
|
EXPOSE 80 443
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# docker/nginx/default.conf
|
||||||
|
|
||||||
|
# HTTP → HTTPS
|
||||||
|
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name nexus.local;
|
||||||
|
|
||||||
|
ssl_certificate /etc/nginx/certs/nexus.local.pem;
|
||||||
|
ssl_certificate_key /etc/nginx/certs/nexus.local-key.pem;
|
||||||
|
|
||||||
|
ssl_protocols TLSv1.2 TLSv1.3;
|
||||||
|
ssl_prefer_server_ciphers off;
|
||||||
|
|
||||||
|
root /var/www/html/public;
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
access_log /var/log/nginx/nexus.access.log combined;
|
||||||
|
error_log /var/log/nginx/nexus.error.log warn;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_pass nexus-app:9000; # Containername vom PHP-FPM
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
# In der Nginx-Konfiguration von nexus.local
|
||||||
|
location /build/assets/ {
|
||||||
|
# Erlaubt explizit deine Subdomain
|
||||||
|
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
|
||||||
|
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS' always;
|
||||||
|
add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Inertia' always;
|
||||||
|
|
||||||
|
# Falls du alle Subdomains von nexus.local erlauben willst:
|
||||||
|
#
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Binary file not shown.
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDAyn8x7h6RGgSF
|
||||||
|
aa+mGj+yUK1obpKf9wRwYJ1uy3chK/hT///v3kNvfEOOKC1iUqGw3I493JQGvDzE
|
||||||
|
D9jI0XfA/F8EEUghCqfTi+9HU7/6xPZkh6irHCVD2WD8GSUbW0ecxMtDSaMiQRIT
|
||||||
|
H/a/4o6g4IlzsY2KQMaId2SpLSJhhLv96dg44PWRSu4PHWBevC8Xdl/6XAKDftV9
|
||||||
|
fZBJR2HLIFiKfd8pPa/Ho/5kWeSNkRa9FWUB7B+draraIuwVfVGbG1UutAsKRZXH
|
||||||
|
VXo7ffSXPtx2+jmMVm3kIkQMpbJ2Yaw8xqSWotDBoIyV4xZBUWc2TDvgtIEaX+k7
|
||||||
|
jqITO9w5AgMBAAECggEAHU7rdUC43uAwrcN6U2sMIeSH6CdfHPhlcVwOsug1jRJt
|
||||||
|
Jv/0/Zcxc0JV1see1qKvN/7flOHyku+M4VVzZFwLs4fqPekOqQ9AojVUw+gkeE/3
|
||||||
|
ESNabeDSfXUPfGOqM3V19owoRmtsZGm2ALhMP7GGc0iPPMpSNSFRzS8xW1KkNmS+
|
||||||
|
MmpBGrRNRu1FAUWxZI51o3mbcI7YKld7+yREjKFNpQrZq9ADAHVk+9oFXvheELJ+
|
||||||
|
picQlQKMWAYxazRKryfWf9tkw3dvY//nalYSDo0EQsvEzkvQJHo8Db/c/VAhgSEg
|
||||||
|
gdEfh/wrk0YKdpA8EuWNCgQ4Otw9761ifzRLEsKK/QKBgQDCKCdc4sPsMjBAUIKc
|
||||||
|
cncFtMMgFUpWOkg7mq8rHKxt6GpdIx8SQKgzV/C1ty9RsrzANb77Eh+wa4i98LeV
|
||||||
|
NSU99YEsCxd7whCkPxxhwM4fyXh08pnv+XDbjt5rbewtlxXAuDwWJDIuzib8XYDX
|
||||||
|
qmTDLVkYzI70OS0sB5FjlkAybwKBgQD+MvhGH3mq9kEYNgRum9/DjsLMG8rQJsp3
|
||||||
|
zFej+cIulwayl7X9Ex/yCU4rBkiVp2YzNP4A/wG3g0aF8QG8SIYuvMGWMU1LSB9F
|
||||||
|
mahRyfrdnz2QCVugFOd1mzweYKsBib3PVOl9o8GpFTjr2+o7bPlV9XDHk5UFUIbV
|
||||||
|
pk/fT/MP1wKBgBReF/sDguAVR8CHcZwt2dSMaOfFs/2lsYwnJvcT0/bXqcjJdWn5
|
||||||
|
xGtWb1bwt5MPeAOF39oAxbhBH6AlT2zknVqJlZpkM3t1GT/Rqw2KJ1VoUi2agZGO
|
||||||
|
DkvKCgUlC+Cgd9S2vv7nnygP0kEpIen94wIikLUsSFbQZK+4v4S971AbAoGAN2tF
|
||||||
|
VYRnMi6d4nlkXfj9v9TQA0/L17WdTqDuOoGpJB8pBqastpAE1u/QavDjwjzMuz1C
|
||||||
|
Y1U1Op0UMv9oMXReTLI6QlRdVZxTtQja+Xnfh5HACjcAEtZ739gIM1c/8QXmq90H
|
||||||
|
Sqz4+7P0xPcdCfeoJGVuQRSb2JzFyK6Jm1YC1+ECgYBZ1AktAbPFaLFgtgjDSJfk
|
||||||
|
JmAhJt7UIFXBXEyLyJon5tGfc+pwYmWnNTZZfdPgBTr3dVQai7MLg3N10bWrCOeg
|
||||||
|
oVd5Qj3/Qf4Dv+TdbY0pWE4+x9Rm5ObFNxccSlvVPMCcWPZ5CVjYBn8UEJA7QOeZ
|
||||||
|
nsXmlx5DvodqqmMap9IQuA==
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEhjCCAu6gAwIBAgIQcVbsFG8e6ruDC2fyvPs8xTANBgkqhkiG9w0BAQsFADCB
|
||||||
|
rTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMUEwPwYDVQQLDDhUSE9N
|
||||||
|
QVMtVUxUUkFCT09cdGhndWVAVGhvbWFzLVVsdHJhYm9vayAoVGhvbWFzIEfDvG50
|
||||||
|
aGVyKTFIMEYGA1UEAww/bWtjZXJ0IFRIT01BUy1VTFRSQUJPT1x0aGd1ZUBUaG9t
|
||||||
|
YXMtVWx0cmFib29rIChUaG9tYXMgR8O8bnRoZXIpMB4XDTI2MDEyNzIyMTQzNFoX
|
||||||
|
DTI4MDQyNzIxMTQzNFowbDEnMCUGA1UEChMebWtjZXJ0IGRldmVsb3BtZW50IGNl
|
||||||
|
cnRpZmljYXRlMUEwPwYDVQQLDDhUSE9NQVMtVUxUUkFCT09cdGhndWVAVGhvbWFz
|
||||||
|
LVVsdHJhYm9vayAoVGhvbWFzIEfDvG50aGVyKTCCASIwDQYJKoZIhvcNAQEBBQAD
|
||||||
|
ggEPADCCAQoCggEBAMDKfzHuHpEaBIVpr6YaP7JQrWhukp/3BHBgnW7LdyEr+FP/
|
||||||
|
/+/eQ298Q44oLWJSobDcjj3clAa8PMQP2MjRd8D8XwQRSCEKp9OL70dTv/rE9mSH
|
||||||
|
qKscJUPZYPwZJRtbR5zEy0NJoyJBEhMf9r/ijqDgiXOxjYpAxoh3ZKktImGEu/3p
|
||||||
|
2Djg9ZFK7g8dYF68Lxd2X/pcAoN+1X19kElHYcsgWIp93yk9r8ej/mRZ5I2RFr0V
|
||||||
|
ZQHsH52tqtoi7BV9UZsbVS60CwpFlcdVejt99Jc+3Hb6OYxWbeQiRAylsnZhrDzG
|
||||||
|
pJai0MGgjJXjFkFRZzZMO+C0gRpf6TuOohM73DkCAwEAAaNiMGAwDgYDVR0PAQH/
|
||||||
|
BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFCZPBarci/Ki
|
||||||
|
jTIGa/Of97sbdowJMBgGA1UdEQQRMA+CDW1hcmVpa2UubG9jYWwwDQYJKoZIhvcN
|
||||||
|
AQELBQADggGBAFQk4wK4Ui/8j6Qd3mBxbEXCTErNByzmM6FGoo3dNbFe1IVputNC
|
||||||
|
izcqHkjWUe1xUYKSPx59O5XwX7MVtvLHvS/ydjuQW7FPdbXv6PQfY81UFtzkGTSX
|
||||||
|
mPrP/yXR/OB2BcOXcVAAeOs7s2hM6EEP++0tgdpXGJN1OKG2dt8XyNzFFCrK8HdD
|
||||||
|
72dnVBXLPKBnptDKaamFdmRlkvu8n+3Xn4V28nFzfMW5qYY6mzTz64+RZu+i2z2A
|
||||||
|
HYP/AkJlr3EdstSsv8eKt6/ByHm3KKwVtkzouPiBiiytjq4qp9vPVsRgL7HKtC4O
|
||||||
|
n1eh0rwcjOstwcHqPMmVRaLOLW1FWJG6UOHL8g5p3N1G/aqv4mlUpxmooNohdio+
|
||||||
|
zGAgqa7o57MVw4RIGWaKjJ7DNU4VJToV2IQqCoBwLO1UYUuR01qQMAOa4zsHruJt
|
||||||
|
2kDGc2GoTyWOEwgDEkgXrhKe1B/MN8LXERvHTYk9rLRicVAo6oazue+O4cGnQC8a
|
||||||
|
gjXe0zdvgwd5rQ==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
Reference in New Issue
Block a user