Maison  >  Article  >  Opération et maintenance  >  Comment Docker déploie nginx et modifie les fichiers de configuration

Comment Docker déploie nginx et modifie les fichiers de configuration

WBOY
WBOYavant
2023-05-12 15:19:131433parcourir

Faites-le avec une seule ligne de commande :

docker run \
 --name nginx-health-web-pc \
 -d -p 6800:80 \
 -v /usr/docker/nginx/html:/usr/share/nginx/html \
 nginx

C'est une joie de courir et de démarrer~~~~~À ce moment-là, le front-end est soudainement venu et a dit : "Vous devez ajouter une configuration à nginx", et d'ailleurs, il vous a aussi dit : "Untel était comme ça "matché",

Bien sûr, vous ne pouvez pas refuser si vous êtes compétitif en ce moment, mais la configuration actuelle demande quand même un certain effort . Généralement, la configuration est effectuée au démarrage de Docker. Il vous suffit de monter le répertoire du fichier de configuration. Cependant, nginx charge d'abord un fichier de configuration principal nginx.conf, puis charge les fichiers de sous-configuration. dans le répertoire conf.d de nginx.conf (généralement au moins un fichier default.conf). C'est beaucoup plus compliqué que de monter un répertoire seul, mais ce n'est pas difficile tant que vous avez une idée claire.

Regardons d'abord la commande montée :

Commande pour démarrer docker

docker run \
 --name mynginx \
 -d -p 80:80 \
 -v /usr/docker/mynginx/html:/usr/share/nginx/html \
 -v /etc/docker/mynginx/nginx.conf:/etc/nginx/nginx.conf:ro \
 -v /etc/docker/mynginx/conf.d:/etc/nginx/conf.d \
 nginx

Il y a quelques points à noter ici :

(1) Le premier "-v" est l'emplacement du projet, placez le projet Allez simplement dans le répertoire où il est monté ;

(2) Le deuxième "-v" est le fichier de configuration principal monté "nginx.conf". Notez qu'il y a une ligne "include /etc" dans le "nginx.conf". " file /nginx/conf.d/*.conf;", cette inclusion pointe vers le chemin du fichier de sous-configuration. Veuillez noter que le chemin qui suit l'inclusion ne doit pas être erroné.

(3) Le troisième "-v" monte également le chemin du fichier de sous-configuration dans docker. Faites attention au chemin indiqué par include dans (2) Il est important de souligner que nginx. conf est Un fichier est monté (docker n'est pas recommandé pour une utilisation de cette manière), et conf.d monte un répertoire commençons par le faire, et nous pouvons constater qu'il y a un problème car il n'y a pas encore de fichier de configuration.

Configurer le fichier de configuration

On retrouve le fichier de configuration généré lorsque nginx est installé par la méthode conventionnelle (généralement sous "/etc/nginx"), correspondant à l'emplacement de montage dans la commande de démarrage ci-dessus, mettre la configuration principale fichier nginx.conf Placez-le à l'emplacement correspondant "/etc/docker/mynginx/nginx.conf", et placez le fichier de sous-configuration "default.conf" dans le répertoire "/etc/docker/mynginx/conf.d"

Réexécutez la commande de démarrage,

J'ai trouvé qu'elle était prête. Désormais, les fichiers dans Docker peuvent être configurés à volonté, ce qui est exactement la même chose que l'installation native.

Réflexion : Lors de la configuration, vous devez avoir une idée : les fichiers montés doivent être chargés dans le processus Docker lors de l'exécution de ! De cette façon, il y a moins de confusion. ------------------------------------------------ ---Ligne de séparation--------------------------------------------- --- ----------

J'ai posté mon fichier de configuration :

nginx.conf

user root;
worker_processes 1;
 
error_log /var/log/nginx/error.log warn;
pid  /var/run/nginx.pid;
 
 
events {
 worker_connections 1024;
}
 
 
http {
 include  /etc/nginx/mime.types;
 default_type application/octet-stream;
 
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';
 
 access_log /var/log/nginx/access.log main;
 
 sendfile  on;
 #tcp_nopush  on;
 
 keepalive_timeout 65;
 
 autoindex on;
 
 #gzip on;
 
 include /etc/nginx/conf.d/*.conf;
 client_max_body_size 100m;
 client_header_buffer_size 128k;
 large_client_header_buffers 4 128k;
}

default.conf

server {
 listen  80;
 server_name localhost;
 
 #charset koi8-r;
 #access_log /var/log/nginx/log/host.access.log main;
 
 location / {
  root /usr/nginx/dacheng-wechat-web;
  # root /usr/nginx/html;
  index index.html index.htm;
  autoindex on;
 try_files $uri /index/index/page.html;
  #try_files $uri /index/map/page.html;
 }
 
 #error_page 404    /404.html;
 
 # redirect server error pages to the static page /50x.html
 #
 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
  root /usr/share/nginx/html;
 }
 
 # proxy the php scripts to apache listening on 127.0.0.1:80
 #
 #location ~ \.php$ {
 # proxy_pass http://127.0.0.1;
 #}
 
 # pass the php scripts to fastcgi server listening on 127.0.0.1:9000
 #
 #location ~ \.php$ {
 # root   html;
 # fastcgi_pass 127.0.0.1:9000;
 # fastcgi_index index.php;
 # fastcgi_param script_filename /scripts$fastcgi_script_name;
 # include  fastcgi_params;
 #}
 
 # deny access to .htaccess files, if apache's document root
 # concurs with nginx's one
 #
 #location ~ /\.ht {
 # deny all;
 #}
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer