Docker+Nginx를 사용하여 단일 페이지 애플리케이션을 배포하는 방법
개발에서 배포까지, 실습
단일 페이지 애플리케이션을 개발할 때 빌드를 실행한 후
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











GPU 서버에서 Docker를 사용할 때 서버 재시작은 다음과 같은 이유가 발생합니다. CUDA 버전 충돌 드라이버 문제 메모리 할당 오류 솔루션 : CUDA 버전이 업데이트 드라이버 제한 GPU 메모리 할당과 일치하는지 확인하십시오.

Docker 환경에서 특정 도메인 이름에 액세스하도록 애플리케이션 구성 다음 단계가 필요합니다. 사용자 정의 네트워크를 작성하고 --- network 옵션을 사용하여 네트워크를 지정하십시오. 컨테이너를 실행할 때 -publish 옵션을 사용하여 응용 프로그램 컨테이너의 포트를 호스트 포트에 매핑하십시오. 호스트 시스템의 /etc /호스트 파일에 DNS 레코드를 추가하여 사용자 정의 도메인 이름을 컨테이너의 IP 주소로 해결하십시오. 사용자 정의 도메인 이름을 사용하여 응용 프로그램에 액세스 할 수 있습니다.

Docker에서 이미지를 가져 오면 원격 리포지토리에서 사전 제작 된 컨테이너 이미지를 가져 와서 로컬 리포지토리로 가져 오는 것이 포함됩니다. 단계에는 다음이 포함됩니다 : 이미지를 당기 (Docker Pull) Docker Image (Docker Image) 나열 및 이미지를 로컬 리포지토리 (Docker import)로 가져옵니다.

Docker Image Hosting Platform은 Docker 이미지를 관리하고 저장하는 데 사용되므로 개발자와 사용자가 사전 제작 된 소프트웨어 환경에 쉽게 액세스하고 사용할 수 있습니다. 일반적인 플랫폼에는 다음이 포함됩니다 : Docker Hub : Docker가 공식적으로 유지하고 거대한 미러 라이브러리가 있습니다. Github 컨테이너 레지스트리 : Github 생태계를 통합합니다. Google 컨테이너 레지스트리 : Google Cloud Platform에서 호스팅했습니다. Amazon Elastic Container 레지스트리 : AWS가 호스팅합니다. Quay.io : Red Hat에 의해

Docker는 이미지 버전 지정, 미러 저장소, 속도 제한 풀, 인증 및 태그가없는 이미지를 포함하여 이미지를 가져올 때 설정을 사용자 정의 할 수 있습니다. 이러한 설정은 Docker Pull 명령 및 -registry, --limit -rate, -auth 및 -a를 포함한 옵션을 통해 구현할 수 있습니다.

Docker Network 연결을 중지하려면 다음 단계를 따르십시오. 1. 중지 할 네트워크 이름을 결정하십시오. 2. Docker Network STOP 명령을 사용하여 네트워크를 중지하십시오. 3. 네트워크가 중지되었는지 확인하려면 정지 상태를 확인하십시오.

Docker의 MacVlan은 컨테이너가 자체 MAC 주소를 가질 수 있도록하는 Linux 커널 모듈로 네트워크 격리, 성능 향상 및 실제 네트워크와의 직접 상호 작용을 가능하게합니다. MacVlan 사용은 다음과 같습니다. 1. 커널 모듈을 설치하십시오. 2. MacVlan 네트워크를 만듭니다. 3. IP 주소 세그먼트 할당; 4. 컨테이너 생성시 MacVlan 네트워크를 지정하십시오. 5. 연결을 확인하십시오.

Docker Application Development는 컨테이너를 사용하여 응용 프로그램을 패키지 및 배포하여 격리, 이식성, 일관성, 빠른 배포 및 버전 제어를 제공합니다. 프로세스에는 코드 작성, Dockerfiles 만들기, 이미지 구축, 컨테이너 실행 및 배포가 포함됩니다. 또한 Docker 볼륨은 데이터 지속성에 사용될 수 있으며 네트워크는 컨테이너 간의 안전한 통신을 가능하게하며 오케스트레이션 도구는 대규모 배포를 관리 할 수 있습니다.
