Docker 배치 node.js 응용
9790 단어 Web
도커가 뭐예요?
통속적으로 docker는 용기를 만들고 관리하는 기술이다.그럼 용기가 뭐예요?용기의 기능은 가상 기기와 매우 비슷하여 모두 물리 호스트에서 여러 개의 운영체제를 운행하는 기술이다.가장 큰 차이점은 가상 기기 기술은 하드웨어를 가상한 후에 그 위에 완전한 운영체제를 운행하고 이 시스템에서 필요한 응용 프로세스를 다시 운행하는 것이다.한편, 용기 내의 응용 프로세스는 숙주의 내부 핵에 직접 실행되고 용기 안에 자신의 내부 핵이 없고 하드웨어 가상도 하지 않는다.따라서 용기는 전통적인 가상 기기보다 더욱 가볍다.
기본 개념
docker를 사용하는 이유
우리는 node를 배치하고 있다는 것을 안다.js의 응용 시 node와 npm가 설치되어 있고 데이터베이스와 관련이 있으면 데이터베이스 환경과 데이터베이스 정보가 필요합니다.응용 프로그램을 시작할 때 프로그램에 의존하는 제3자 라이브러리를 설치해야 한다.단순히 한 대의 기계에 배치하는 것만으로도 괜찮다.그러나 만약에 우리가 많은 기계에 이 응용을 배치해야 한다면 일반적인 방법에 따라 여러 기계에서 응용에 필요한 환경을 끊임없이 반복해서 구축하는 것은 시간이 많이 걸리는 과정이다.만약 우리가 docker 형식을 사용한다면 로컬에서 프로그램의 렌즈 (프로그램 실행에 필요한 모든 환경을 포함) 를 만들 수 있고, 원격 호스트에서 우리가 만든 렌즈를 업로드한 다음, docker를 사용하여 렌즈에 따라 프로그램 프로세스를 실행하는 용기를 만들 수 있으며, 몇 줄의 명령을 사용하면 여러 호스트에서 프로그램을 실행할 수 있다.
환경 설명
이 문서의 모든 작업은 Ubuntu 16.0에서 수행됩니다.
사전 준비
본문의 독자는node에 익숙하다.js 기술, 이미 node를 사용할 수 있습니다.js는 간단한 응용을 구축합니다.따라서 본고의 설명에는 구체적인 node가 포함되지 않는다.js 코드 튜토리얼.이 밖에 본문의 node.js는 MySql 저장소를 디자인하는데 데이터베이스와 관련이 없는 것은 3절부터 볼 수 있다.
1. docker 설치
참고 문장
2. MySQL 용기 제작
MySQL 데이터베이스 미러링 잡아당기기
docker pull mysql/mysql-server:tag
tag: 가져오고 싶은 거울의 버전 번호(예를 들어 5.5, 5.6, 5.7, 8.0, or latest).여기 쓰는 건 5.7이에요.8.0 또는 latest를 사용하는 것을 권장하지 않습니다.새 버전의 mysql 동작은 이전과 다릅니다. 인터넷의 대다수 강좌에 따라 처리하면 예상치 못한 오류가 발생할 수 있습니다.본인은 이미 구덩이를 밟았다.
MySQL 데이터베이스 컨테이너 실행
sudo docker run --name db-manage -d -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 mysql/mysql-server:5.7
-name db-manage: MySQL 미러가 실행 중인 컨테이너의 이름 - d detach를 지정하여 백그라운드에서 컨테이너를 실행합니다. -e MYSQL_ROOT_PASSWORD=123(또는 – env) 환경 변수 - 파라미터가 docker가 제공하는 환경 변수 MYSQLROOT_PASSWORD=password: 데이터베이스 루트 계정 비밀번호를 password-p3306:3306(또는 -publish)로 설정하면 엔진 사용자가 용기 안의 3306 포트를 외부의 3306 포트에 비추고 싶다고 알려줍니다.
mysql/mysql-server:5.7: 끌어낸 mysql 데이터베이스 렌즈입니다
외부에서 데이터베이스에 접근할 수 있는 권한 추가
MySQL은 기본적으로 외부 네트워크에서 액세스할 수 없으며 기본적으로 로컬 IP(127.0.0.1)만 액세스할 수 있습니다.우리는 이따가 node를 실행해야 한다.js의 용기는 MySQL 서비스를 실행하는 용기에 접근할 수 있는 권한을 가지고 있습니다.혹시 의심스러울지도 몰라요. 모두 한 기계에 있는데 IP 주소가 있어야 하는 거 아니에요?그렇지 않습니다.실제 호스트는 그 위에서 실행되는 용기마다 IP를 따로 분배하기 때문에 용기마다 IP 주소가 다르다.
1. MySQL 컨테이너에 들어가기
sudo docker exec -it db-manage bash
db-manage: MySQL을 실행하는 컨테이너 이름
2. 컨테이너에서 Mysql 서비스에 들어가기
mysql -uroot -ppassword
root: 데이터베이스 사용자 이름password: 용기를 실행할 때 설정한 데이터베이스 비밀번호
3. 외부 액세스 권한 추가
다음 명령을 실행합니다. (이전에 MySQL 버전이 5.7보다 높으면 오류가 발생합니다. 다음 버전의 MySQL에 사용자 권한을 추가하는 명령은 아래에 보여 주지 않기 때문에, 홈페이지를 참고하십시오.)
#
USE mysql;
# root ip
GRANT ALL PRIVILEGES ON *.* TO "root"@"%" IDENTIFIED BY "password" WITH GRANT OPTION;
#
FLUSH PRIVILEGES;
MySQL 명령의 번호가 나뉘어진 끝에 FLUSH PRIVILEGES 업데이트 권한 설정을 사용해야 유효합니다. 지정한 IP 연결에 MySQL 데이터베이스에만 권한을 부여하려면 명령을 사용하십시오. (MySQL에 사용자 권한을 더 추가하면 이 글을 참고할 수 있습니다)
# root 192.168.1.3
GRANT ALL PRIVILEGES ON *.* TO "root"@"192.168.1.3" IDENTIFIED BY "password" WITH GRANT OPTION;
3. 노드 프로그램 용기 제작
node를 끌어당기다.js 기본 이미지
sudo docker pull node:tag
tag에서 가져오려는 미러의 버전 번호입니다.여기는 9.11.2-jessie를 사용하여 docker 공공 거울 홈페이지 참조(/node/">https://hub.docker.com//node/)
자신의 노드를 만들어라.js 서비스 미러
사전 요구 사항: 1.실행 가능한 node가 있습니다.js 프로그램 2.node.js 링크 데이터베이스 설정은 다음과 같습니다.
const address = {
host : process.env.DATABASE_HOST || 'localhost',
user : 'root',
password : 'choosealife',
port: process.env.PORT || '3306',
database: 'manage',
};
1. 프로그램 폴더 루트 디렉터리에 들어가기
cd node-app
2. Dockerfile 파일 만들기(파일 이름은 변경할 수 없음)
touch Dockerfile
:
# node node:
FROM node:9.11.2-jessie
# , 'manage' .
ADD . /manage
#
RUN cd /manage;
npm install --production
#
EXPOSE 3000
# (manage ADD , server.js )
CMD ["node","/manage/server.js"]
3. 미러링 만들기
sudo docker build -t node-image-name .
참고: node-imge-name은 미러 이름입니다.명령 뒤에 하나..잊으면 안돼.
4. node 프로그램 미러링을 실행하고 실행 중인 MySQL 컨테이너와 연결
sudo docker run --name manage-system -it -p 3000:3000 --link db-manage:db-manage -e DATABASE_HOST=db-manage node-manage-image
1. 기본 미러링
sudo docker pull [ ] [Docker Registry [: ]/] [: ]
2. 미러링 만들기
# Dockerfile, version , latest, .
sudo docker build -t imgae-name:version .
3. 미러 보기
sudo docker image ls
4. 미러 제거
sudo docker image rm image-name
5. 미러 생성 컨테이너 지정
sudo docker run -it image-name
6. 이미 존재하는 컨테이너를 시작합니다.
sudo docker container start container-name
7. 이미 실행 중인 컨테이너 중지
sudo docker container stop container-name
8. 실행 중인 용기를 다시 시작합니다
sudo docker container restart container-name
9. 모든 컨테이너 보기
sudo docker container ls -a
10. 컨테이너 삭제
# , -f
sudo docker container rm container-name
#
sudo docker container prune
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fortinet FortiWeb Web Application Firewall Policy BypassFrom: Geffrey Velasquez Date: Wed, 2 May 2012 20:33:23 -0500...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.