From 91883b25230bf324b56ffacaffc02bcc49f0a477 Mon Sep 17 00:00:00 2001 From: Zikil Date: Fri, 1 Nov 2024 14:37:44 +0700 Subject: [PATCH] docker --- Dockerfile | 24 ++++-- docker-compose.yml | 43 +++++----- nginx.conf | 194 ++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 222 insertions(+), 39 deletions(-) diff --git a/Dockerfile b/Dockerfile index df9e21c..718465e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,13 +32,25 @@ # # CMD ["nginx", "-g", "daemon off;"] -FROM node:18-alpine +# FROM node:18-alpine +# WORKDIR /app +# COPY package*.json ./ +# RUN npm install +# COPY . . + +# EXPOSE 3000 +# CMD ["npm", "start"] + +FROM node:alpine as build WORKDIR /app -COPY package*.json ./ -RUN npm install COPY . . +RUN npm install +RUN npm run build -EXPOSE 3000 -CMD ["npm", "start"] - +# production enviroment +FROM nginx:stable-alpine +COPY --from=build /app/build /var/www/build +COPY --from=build /app/nginx.conf /etc/nginx/sites-enabled/djfault +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index a2c52e2..1b83dd1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,30 +22,31 @@ version: '3' services: - nextjs: + app: build: . - container_name: nextjs + # container_name: app restart: always - ports: - - "3000:3000" - networks: - - app-network - - nginx: - image: nginx:alpine - container_name: nginx ports: - "80:80" - "443:443" - volumes: - - ./nginx/conf.d:/etc/nginx/conf.d - - ./nginx/ssl:/etc/nginx/ssl - depends_on: - - nextjs - networks: - - app-network - restart: always + # networks: + # - app-network -networks: - app-network: - driver: bridge +# nginx: +# image: nginx:alpine +# container_name: nginx +# ports: +# - "80:80" +# - "443:443" +# volumes: +# - ./nginx/conf.d:/etc/nginx/conf.d +# - ./nginx/ssl:/etc/nginx/ssl +# depends_on: +# - nextjs +# networks: +# - app-network +# restart: always + +# networks: +# app-network: +# driver: bridge diff --git a/nginx.conf b/nginx.conf index 61e6623..710532f 100644 --- a/nginx.conf +++ b/nginx.conf @@ -1,3 +1,173 @@ +# You should look at the following URL's in order to grasp a solid understanding +# of Nginx configuration files in order to fully unleash the power of Nginx. +# https://www.nginx.com/resources/wiki/start/ +# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/ +# https://wiki.debian.org/Nginx/DirectoryStructure +# +# In most cases, administrators will remove this file from sites-enabled/ and +# leave it as reference inside of sites-available where it will continue to be +# updated by the nginx packaging team. +# +# This file will automatically load configuration files provided by other +# applications, such as Drupal or Wordpress. These applications will be made +# available underneath a path with that package name, such as /drupal8. +# +# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. +## + +# Default server configuration +# +server { + listen 80 default_server; + listen [::]:80 default_server; + + # SSL configuration + # + # listen 443 ssl default_server; + # listen [::]:443 ssl default_server; + # + # Note: You should disable gzip for SSL traffic. + # See: https://bugs.debian.org/773332 + # + # Read up on ssl_ciphers to ensure a secure configuration. + # See: https://bugs.debian.org/765782 + # + # Self signed certs generated by the ssl-cert package + # Don't use them in a production server! + # + # include snippets/snakeoil.conf; + + root /var/www/build; + + # Add index.php to the list if you are using PHP + index index.html index.htm index.nginx-debian.html; + + server_name anthillsib.ru www.anthillsib.ru; + + location / { + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + try_files $uri $uri/ /index.html; + } + + # pass PHP scripts to FastCGI server + # + #location ~ \.php$ { + # include snippets/fastcgi-php.conf; + # + # # With php-fpm (or other unix sockets): + # fastcgi_pass unix:/run/php/php7.4-fpm.sock; + # # With php-cgi (or other tcp sockets): + # fastcgi_pass 127.0.0.1:9000; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} +} + + +# Virtual Host configuration for example.com +# +# You can move that to a different file under sites-available/ and symlink that +# to sites-enabled/ to enable it. +# +#server { +# listen 80; +# listen [::]:80; +# +# server_name example.com; +# +# root /var/www/example.com; +# index index.html; +# +# location / { +# try_files $uri $uri/ =404; +# } +#} + +server { + + # SSL configuration + # + # listen 443 ssl default_server; + # listen [::]:443 ssl default_server; + # + # Note: You should disable gzip for SSL traffic. + # See: https://bugs.debian.org/773332 + # + # Read up on ssl_ciphers to ensure a secure configuration. + # See: https://bugs.debian.org/765782 + # + # Self signed certs generated by the ssl-cert package + # Don't use them in a production server! + # + # include snippets/snakeoil.conf; + + root /var/www/build; + + # Add index.php to the list if you are using PHP + index index.html index.htm index.nginx-debian.html; + server_name anthillsib.ru; # managed by Certbot + + + location / { + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + try_files $uri $uri/ /index.html; + } + + # pass PHP scripts to FastCGI server + # + #location ~ \.php$ { + # include snippets/fastcgi-php.conf; + # + # # With php-fpm (or other unix sockets): + # fastcgi_pass unix:/run/php/php7.4-fpm.sock; + # # With php-cgi (or other tcp sockets): + # fastcgi_pass 127.0.0.1:9000; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} + + + listen [::]:443 ssl ipv6only=on; # managed by Certbot + listen 443 ssl; # managed by Certbot + ssl_certificate /etc/letsencrypt/live/anthillsib.ru/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/anthillsib.ru/privkey.pem; # managed by Certbot + include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot + +} +server { + if ($host = anthillsib.ru) { + return 301 https://$host$request_uri; + } # managed by Certbot + + + listen 80 ; + listen [::]:80 ; + server_name anthillsib.ru; + return 404; # managed by Certbot + + +} + + + + + + + + # server { # listen 80; # server_name localhost:3000; @@ -32,17 +202,17 @@ # proxy_set_header Host $host; # proxy_cache_bypass $http_upgrade; # } -# } +# # } -server { - listen 80; - server_name anthillsib.ru www.anthillsib.ru; +# server { +# listen 80; +# server_name anthillsib.ru www.anthillsib.ru; - location / { - proxy_pass http://localhost:3000; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection 'upgrade'; - proxy_set_header Host $host; - } -} \ No newline at end of file +# location / { +# proxy_pass http://localhost:3000; +# proxy_http_version 1.1; +# proxy_set_header Upgrade $http_upgrade; +# proxy_set_header Connection 'upgrade'; +# proxy_set_header Host $host; +# } +# } \ No newline at end of file