Docker是一種輕量級的虛擬化技術,在企業級應用中被廣泛應用。它提供了一種容器化的解決方案,使部署應用變得更加簡單、高效、快速。本篇實戰文章介紹如何使用Docker構建和部署一個Node.js應用程序。
我們將使用Docker Compose來構建應用程序,并使用Nginx作為反向代理服務器,將請求轉發給Node.js容器。以下是我們的Docker Compose文件:
version: '3' services: nginx: image: nginx restart: always ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - app app: build: ./app restart: always ports: - 3000:3000 volumes: - ./app:/app
我們的Docker Compose文件包含兩個服務:Nginx和Node.js應用程序。Nginx負責將請求轉發到Node.js容器,并將靜態文件發送到瀏覽器。Node.js應用程序在容器中運行,并向Nginx容器提供API服務。
下面是我們的Nginx配置文件:
server { listen 80; server_name example.com; location / { proxy_pass http://app:3000; proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /static/ { alias /app/static/; } }
在這個配置文件中,我們使用proxy_pass將所有請求轉發到Node.js容器,并使用alias指令將所有靜態文件發送到瀏覽器。
下面是我們的Node.js應用程序的Dockerfile:
FROM node:14 WORKDIR /app COPY package.json package-lock.json ./ RUN npm install --production # Copy our application code. COPY . . # Set environment variables ENV PORT=3000 # Expose port EXPOSE $PORT # Run the application CMD ["node", "index.js"]
在這個Dockerfile中,我們使用node:14作為基礎鏡像,并將應用程序的代碼復制到容器中。我們使用npm install --production安裝依賴項,并將環境變量設置為3000端口。
運行我們的Docker Compose文件,執行以下命令:
docker-compose up -d
現在,我們的Node.js應用程序已經成功部署在Docker容器中,并通過Nginx反向代理服務器提供服務。我們可以通過瀏覽器訪問應用程序,例如:http://example.com。