이 글은 PHP 큐의 구현 코드를 소개합니다. 이는 특정 참조 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
Node는 프로젝트의 중간 계층으로 사용될 것이며, docker는 node 배포에 사용될 것입니다. 여기서는 배포의 핵심 사항과 단계를 요약하고 기록합니다. docker는 인터넷에 많은 관련 튜토리얼과 기사가 있으며, 필요한 경우 직접 검색하고 볼 수 있습니다.
프로젝트 구조
-- docker-node |-- data |-- server |-- app.js |-- Dockerfile |-- process.yml |-- package.json |-- docker-compose.yml
1. Node.js 프로그램 만들기
app.js const express = require('express'); const app = express(); app.get('/', (req, res) => res.send('hello world!'));
2. Dockerfile 만들기
FROM node:8.9-alpine RUN mkdir -p /usr/src/app WORKDIR /usr/src/app RUN npm set registry https://registry.npm.taobao.org/ RUN npm install CMD ["./node_modules/pm2/bin/pm2-docker", "process.yml"]
pm2-docker를 통해 노드 애플리케이션을 실행하는 것을 확인할 수 있습니다. 파일 변경 사항을 모니터링하여 애플리케이션 재시작, 로그 공유 등의 효과를 얻을 수 있습니다. 여기서는 process.yml 구성 파일이 필요합니다. 관련 사용법은 PM2 문서를 참조하세요.
process.yml
apps:
- script : 'app.js' name : 'dokcer-node' exec_mode: 'fork' watch : true instances: 1 log_date_format : 'YYYY-MM-DD HH:mm Z' ignore_watch: ['node_modules']
3. docker-compose.yml 만들기
프로덕션 환경에서는 구성 파일을 통해 여러 Docker 컨테이너를 관리하는 경우가 많습니다. docker-compose를 사용하여 애플리케이션을 시작, 중지 및 다시 시작하세요.
docker-compose.yml
version: "3.0" services: server_node: container_name: server-node build: context: ./server volumes: - ./server:/usr/src/app ports: - "3008:3008" environment: - TZ=Asia/Shanghai portainer: image: portainer/portainer:1.11.4 container_name: portainer expose: - "9000" ports: - "9000:9000" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./data/portainer:/data environment: - TZ=Asia/Shanghai
4. 컨테이너 시작
위의 파일이 생성된 후 다음 명령을 실행하면 이미지가 생성되고 컨테이너가 시작됩니다
$ docker-compose -f docker-compose.yml up -d
5. Test
1. 로컬 포트 3008
2. 코드가 변경되면 노드 자동 재시작 기능을 테스트합니다. "hello world!"를 "restart!!!"로 변경합니다.
3. Portainer를 사용하면 명령줄과 비교하여 컨테이너 로그, 컨테이너 구성, 상태를 쉽고 빠르게 확인하고 다시 시작 및 삭제하는 등의 작업을 수행할 수 있습니다. 로컬 포트 9000에 액세스합니다. 예(docker-compese.yml에 구성됨), 결과는 다음과 같습니다.
위 내용은 이 글의 전체 내용이며, 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
위 내용은 Docker를 사용하여 Node.js를 배포하는 세부 프로세스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!