Rumah > Operasi dan penyelenggaraan > Nginx > Bagaimana untuk menggunakan aplikasi satu halaman dengan Docker+Nginx

Bagaimana untuk menggunakan aplikasi satu halaman dengan Docker+Nginx

WBOY
Lepaskan: 2023-05-15 19:40:19
ke hadapan
816 orang telah melayarinya

Daripada pembangunan kepada penggunaan, lakukan sendiri

Apabila kami membangunkan aplikasi satu halaman, selepas melaksanakan binaan,

npm run build
Salin selepas log masuk

akan menjana index.html dalam direktori dist. Jadi bagaimana untuk menggunakan index.html ini ke pelayan?

Struktur direktori

  • dist/: Fail statik dibina oleh bahagian hadapan

  • docker/ : Fail konfigurasi diperlukan untuk pencerminan

Bagaimana untuk menggunakan aplikasi satu halaman dengan Docker+Nginx

Konfigurasi nginx

Pilih beberapa perkara konfigurasi untuk dibincangkan, pertama ialah sumber gzip Compress untuk menjimatkan lebar jalur dan meningkatkan kelajuan pemuatan penyemak imbas

Walaupun pek web sudah menyokong penjanaan pakej termampat .gz pada masa binaan, ia juga boleh didayakan melalui nginx
gzip on;
gzip_disable "msie6";
# 0-9 等级,级别越高,压缩包越小,但对服务器性能要求也高
gzip_comp_level 9;
gzip_min_length 100;
# gzip 不支持压缩图片,我们只需要压缩前端资源
gzip_types text/css application/javascript;
Salin selepas log masuk

Kemudian terdapat port perkhidmatan Konfigurasi, proksi balikkan api ke perkhidmatan hujung belakang

server {
 listen 8080;
 server_name www.frontend.com;

 root /usr/share/nginx/html/;

 location / {
 index index.html index.htm;
 try_files $uri $uri/ /index.html;
 # 禁止缓存 html,以保证引用最新的 css 和 js 资源
 expires -1;
 }

 location /api/v1 {
 proxy_pass http://backend.com;
 }
}
Salin selepas log masuk

Konfigurasi lengkap kelihatan seperti ini

worker_processes 1;

events { worker_connections 1024; }

http {
 ##
 # basic settings
 ##

 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;
 keepalive_timeout 65;
 types_hash_max_size 2048;

 include /etc/nginx/mime.types;
 default_type application/octet-stream;

 ##
 # logging settings
 ##

 access_log /var/log/nginx/access.log;
 error_log /var/log/nginx/error.log;

 ##
 # gzip settings
 ##

 gzip on;
 gzip_disable "msie6";
 gzip_comp_level 9;
 gzip_min_length 100;
 gzip_types text/css application/javascript;

 server {
 listen 8080;
 server_name www.frontend.com;

 root /usr/share/nginx/html/;

 location / {
  index index.html index.htm;
  try_files $uri $uri/ /index.html;
  expires -1;
 }

 location /api/v1 {
  proxy_pass http://backend.com;
 }
 }
}
Salin selepas log masuk

Konfigurasi docker

Ini sedikit lebih mudah, berdasarkan asas Mirror, salin nginx.conf dan index.html yang kami tulis ke dalam cermin

from nginx:alpine

copy nginx.conf /etc/nginx/nginx.conf
copy dist /usr/share/nginx/html
Salin selepas log masuk

Tulis makefile

Setelah melengkapkan persediaan di atas, anda boleh menulis arahan untuk melaksanakan Imej itu dibungkus

Mula-mula beri imej nama dan nombor port

app_name = spa_nginx_docker
port = 8080
Salin selepas log masuk

Bungkus imej melalui binaan

build:
 cp docker/dockerfile .
 cp docker/nginx.conf .
 docker build -t $(app_name) .
 rm dockerfile
 rm nginx.conf
Salin selepas log masuk

Mulakan imej melalui penggunaan

deploy:
 docker run -d -it -p=$(port):$(port) --name="$(app_name)" $(app_name)
Salin selepas log masuk

Akhirnya, ada berhenti untuk berhenti dan membersihkan imej

stop:
 docker stop $(app_name)
 docker rm $(app_name)
 docker rmi $(app_name)
Salin selepas log masuk

Konfigurasi lengkap kelihatan seperti ini

app_name = spa_nginx_docker
port = 8080

build:
 cp docker/dockerfile .
 cp docker/nginx.conf .
 docker build -t $(app_name) .
 rm dockerfile
 rm nginx.conf

deploy:
 docker run -d -it -p=$(port):$(port) --name="$(app_name)" $(app_name)

stop:
 docker stop $(app_name)
 docker rm $(app_name)
 docker rmi $(app_name)
Salin selepas log masuk

Arahan lengkap kelihatan seperti ini

# 静态资源构建
npm run build

# 镜像打包
make build

# 停止并删除旧镜像(首次可忽略)
make stop

# 镜像启动
make deploy
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menggunakan aplikasi satu halaman dengan Docker+Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan