• 对部署_nginx_pm2_docker的研究3


        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
     
  • 相关阅读:
    第6课:datetime模块、操作数据库、__name__、redis、mock接口
    第5课:内置函数、处理json、常用模块
    第4课:函数、模块、集合
    第3课:列表和字典的增删改查、字符串常用方法、文件操作
    第2课:jmeter总结、Charles抓包
    第1课:接口测试和jmeter总结
    Centos下找不到eth0设备的解决方法
    Python安装、配置
    改进的SMO算法
    拉普拉斯特征图降维及其python实现
  • 原文地址:https://www.cnblogs.com/zhouyideboke/p/13263392.html
Copyright © 2020-2023  润新知