Как внести изменения в файл по умолчанию nginx, развернутый на Pod

#docker #nginx #kubernetes

#докер #nginx #кубернетес

Вопрос:

У меня есть файл nginx по умолчанию, который я копирую в /etc/nginx/сайты-доступно/ расположение, когда я делаю определенные изменения в файле по умолчанию, изменения не отражаются в этом файле в разделе pod.

Я упомянул команду копирования для копирования файла по умолчанию в /etc/nginx/сайты-доступны/, хотел знать, автоматически ли этот файл по умолчанию генерируется nginx, в результате чего он не может отразить мои изменения. Есть ли способ изменить файл по умолчанию?

Я попытался напрямую изменить файл по умолчанию внутри модуля, но как только модуль перезапустится, изменения будут потеряны.

файл по умолчанию

 ## # 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. # http://wiki.nginx.org/Pitfalls # http://wiki.nginx.org/QuickStart # http://wiki.nginx.org/Configuration # # Generally, you will want to move this file somewhere, and start with a clean # file but keep this around for reference. Or just disable in sites-enabled. # # 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;  #  # Self signed certs generated by the ssl-cert package  # Don't use them in a production server!  #  # include snippets/snakeoil.conf;   root /var/www/html;   # Add index.php to the list if you are using PHP  index index.html index.htm index.nginx-debian.html;   server_name _;   location / {  # First attempt to serve request as file, then  # as directory, then fall back to displaying a 404.  try_files $uri $uri/ =404;  #Sample testing to the file  }   # pass the PHP scripts to FastCGI server listening on 127.0.0.1:8000  #  location ~ .php$ {  include snippets/fastcgi-php.conf;  #  # With php5-cgi alone:  # fastcgi_pass 127.0.0.1:9000;  # # With php5-fpm:  fastcgi_pass unix:/var/run/php5-fpm.sock;  }   # 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; # } #}  

Докерфайл

 FROM node:12.10.0  ENV APP_ROOT /usr/src/webapp/ ENV DOC_ROOT /var/www/html/  ENV DEV_ENV development ENV DEV_BASE_HREF https://app.com/app-development/  RUN mkdir -p $APP_ROOT $DOC_ROOT RUN chmod 777 $DOC_ROOT  COPY . $APP_ROOT  RUN chmod 777 init.sh  RUN apt-get update   amp;amp; apt-get install nginx -y  RUN npm cache clean --force   amp;amp; npm rebuild node-sass   amp;amp; npm install -g @angular/cli@v1.6.5 --unsafe  RUN rm -rf /etc/nginx/sites-available/default  COPY default /etc/nginx/sites-available/default  RUN ls /etc/nginx/sites-available amp;amp; cat /etc/nginx/sites-available/default    RUN npm cache clear --force amp;amp; npm install --no-shrinkwrap --update-binary   RUN node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod --env=prod -extract-css false --base-href $DEV_BASE_HREF --output-path=./dist   EXPOSE 80 ENTRYPOINT ["/bin/bash", "init.sh"] CMD ["dev"]   

Ответ №1:

Не уверен, почему вы используете Nginx и узел в одном файле Dockerfile

в идеале вы должны запускать один процесс внутри контейнера.

 COPY ./nginx/default.conf /etc/nginx/nginx.conf   

Вы можете перезаписать файл внутри файла Dockerfile, как описано выше.

 COPY default /etc/nginx/sites-available/default  

Убедитесь, что ваш файл удаляется, иначе вы можете запустить команду удалить

 RUN ls /etc/nginx/sites-available amp;amp; cat /etc/nginx/sites-available/default  

убедитесь, что ваш файл действительно помещен в docker

 RUN npm cache clean --force   amp;amp; npm rebuild node-sass   amp;amp; npm install -g @angular/cli@v1.6.5 --unsafe  RUN rm /etc/nginx/sites-available/default  COPY default /etc/nginx/sites-available/  RUN ls /etc/nginx/sites-available amp;amp; cat /etc/nginx/sites-available/default   RUN npm cache clear --force amp;amp; npm install --no-shrinkwrap --update-binary  

Комментарии:

1. Ладно, Харш попробует и даст тебе поиздеваться

2. Просто чтобы подтвердить, нужно ли мне изменить команду КОПИРОВАНИЯ на COPY ./nginx/default.conf /etc/nginx/nginx.conf?

3. что вам нужно проверить, где находится ваш файл настройки nginx, возможно, не нужно менять, я просто написал команду для подтверждения

4. Хорошо, я пытаюсь сначала удалить этот файл, а затем СКОПИРОВАТЬ файл по умолчанию /etc/nginx/сайты-доступны/

5. Я восстановил образ Докера, теперь он работает нормально. Спасибо за помощь, Харш.