>  기사  >  운영 및 유지보수  >  Docker+Nginx를 사용하여 단일 페이지 애플리케이션을 배포하는 방법

Docker+Nginx를 사용하여 단일 페이지 애플리케이션을 배포하는 방법

WBOY
WBOY앞으로
2023-05-15 19:40:19779검색

개발에서 배포까지, 실습

단일 페이지 애플리케이션을 개발할 때 빌드를 실행한 후

npm run build

는 dist 디렉터리에 index.html을 생성하므로 이 index.html을 서버에 배포하는 방법 ?

디렉터리 구조

  • dist/: 프런트 엔드에서 생성된 정적 파일

  • docker/: 미러링에 필요한 구성 파일

Docker+Nginx를 사용하여 단일 페이지 애플리케이션을 배포하는 방법

nginx 구성

몇 가지 구성 포인트 먼저, gzip은 리소스를 압축하여 대역폭을 절약하고 브라우저 로딩 속도를 향상시킵니다.

webpack은 이미 구성 중에 .gz 압축 패키지 생성을 지원하지만 nginx
gzip on;
gzip_disable "msie6";
# 0-9 等级,级别越高,压缩包越小,但对服务器性能要求也高
gzip_comp_level 9;
gzip_min_length 100;
# gzip 不支持压缩图片,我们只需要压缩前端资源
gzip_types text/css application/javascript;

를 통해 활성화할 수도 있습니다. 그런 다음 API 역방향 프록시를 구성해야 합니다. 백엔드 서비스

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;
 }
}

전체 구성은 다음과 같습니다

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;
 }
 }
}

Docker 구성

여기서는 좀 더 간단합니다. 기본 이미지를 기반으로 우리가 작성한 nginx.conf 및 index.html을 이미지에 복사하세요

from nginx:alpine

copy nginx.conf /etc/nginx/nginx.conf
copy dist /usr/share/nginx/html

Write the makefile

위의 준비가 완료되면 명령을 작성하여 이미지 패키징을 수행할 수 있습니다

먼저 이미지에 이름과 포트 번호를 지정합니다

app_name = spa_nginx_docker
port = 8080

build를 통해 이미지를 패키징합니다

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)

전체 구성은 다음과 같습니다

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)

전체 명령은 다음과 같습니다

# 静态资源构建
npm run build

# 镜像打包
make build

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

# 镜像启动
make deploy

위 내용은 Docker+Nginx를 사용하여 단일 페이지 애플리케이션을 배포하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제