개발에서 배포까지, 실습
단일 페이지 애플리케이션을 개발할 때 빌드를 실행한 후
npm run build
는 dist 디렉터리에 index.html을 생성하므로 이 index.html을 서버에 배포하는 방법 ?
디렉터리 구조
dist/: 프런트 엔드에서 생성된 정적 파일
docker/: 미러링에 필요한 구성 파일
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!