0
点赞
收藏
分享

微信扫一扫

对部署_nginx_pm2_docker的研究3

一点读书 2022-07-13 阅读 83

 

    Docker概念

    隔离的进程独⽴于宿主和其它的隔离的进程 - 容器

    GO语⾔开发

   特点

   ⾼效的利⽤系统资源

   快速的启动时间

   ⼀致的运⾏环境

   持续交付和部署

   更轻松的迁移

对⽐传统虚拟机总结

特性 容器 虚拟机

启动 秒级 分钟级

硬盘使⽤ ⼀般为 MB ⼀般为 GB

性能 接近原⽣ 弱于

系统⽀持量 单机⽀持上千个容器 ⼀般⼏⼗个

三个核⼼概念

镜像

容器

仓库

Docker基本使⽤

构建⼀个Nginx服务器

1. 拉取官⽅镜像

# 拉取官⽅镜像

docker pull nginx

# 查看

docker images nginx

# 启动镜像

mkdir www

echo 'hello docker!!' >> www/index.html

# 启动

# www⽬录⾥⾯放⼀个index.html

docker run -p 80:80 -v $PWD/www:/usr/share/nginx/html -d nginx

# 查看进程

docker ps

docker ps -a // 查看全部

# 伪终端 ff6容器的uuid

# -t 选项让Docker分配⼀个伪终端(pseudo-tty)并绑定到容器的标准输⼊上,

# -i 则让容器的标准输⼊保持打开

docker exec -it ff6 /bin/bash

# 停⽌

docker stop ff6

# 删除镜像

docker rm ff6

Dockerfifile定制镜像

#Dockerfile

FROM nginx:latest

RUN echo '<h1>Hello, Kaikeba!</h1>' > /usr/share/nginx/html/index.html

# 定制镜像

docker build -t mynginx .

# 运⾏

# -d 守护态运⾏

docker run -p 80:80 -d mynginx

定制⼀个程序NodeJS镜像

npm init -y
npm i koa -s
// package.json
{
"name": "myappp",
"version": "1.0.0",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "myappp",
"dependencies": {
"koa": "^2.7.0"开课吧web全栈架构师
}
}
// app.js
const Koa = require('koa')
const app = new Koa()
app.use(ctx => {
Math.random() > 0.8 ? abc() : ''
ctx.body = 'Hello Docker'
})
app.listen(3000, () => {
console.log('app started at http://localhost:3000/')
})

#Dockerfile

#制定node镜像的版本

FROM node:10-alpine

#移动当前⽬录下⾯的⽂件到app⽬录下

ADD . /app/

#进⼊到app⽬录下⾯,类似cd

WORKDIR /app

#安装依赖

RUN npm install

#对外暴露的端⼝

EXPOSE 3000

#程序启动脚本

CMD ["node", "app.js"]

 

# 定制镜像

docker build -t mynode .

# 运⾏

docker run -p 3000:3000 -d mynode

Pm2 - 利⽤多核资源

# .dockerignore

node_modules

// process.yml

apps:

- script : app.js

instances: 2

watch : true

env :

NODE_ENV: production

# Dockerfile

FROM keymetrics/pm2:latest-alpine

WORKDIR /usr/src/app

ADD . /usr/src/app

RUN npm config set registry https://registry.npm.taobao.org/ && \

npm i

EXPOSE 3000

#pm2在docker中使⽤命令为pm2-docker

CMD ["pm2-runtime", "start", "process.yml"]

 

# 定制镜像

docker build -t mypm2 .

# 运⾏

docker run -p 3000:3000 -d mypm2

 

 



举报

相关推荐

0 条评论