#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. Я восстановил образ Докера, теперь он работает нормально. Спасибо за помощь, Харш.