随笔 - 435  文章 - 0  评论 - 111  阅读 - 62万 

现在很多开源软件都采用Docker部署, 开发机器还是用windows多, win10可以用Docker Desktop

win7 下载Docker toolbox 下载地址 https://get.daocloud.io/toolbox/ 下载  v19.03.12

 

运行Docker Termainal, 如果出现下面错误

1
2
3
Error getting IP address: Something went wrong running an SSH command!
command : ip addr show dev eth1
err     : exit status 255

  

 

 

 进入BIOS,找到 Intel Virtualization Technology,这个配置,设置为enabled。

 

运行 Docker Quickstart Terminal ,初次操作Docker需要我们下载boot2Docker镜像,为了节省时间我们可以直接在 (boot2docker下载地址:https://github.com/boot2docker/boot2docker/releases)下载版本相对性的资源

---------------------------------------------------------

boot2docker_19.03.12 网盘链接


链接:https://pan.baidu.com/s/1h6qXJfb1yOiqwgw5HuzZEQ
提取码:69ij
————————————————

在将我们下载的 boot2docker.iso文件复制到C:\Users\Administrator.docker\machine\cache路径下,再次运行Docker Quickstart Terminal。

稍等片刻我们会看到以下结果:

 

 

 

 

为了验证Docker的安装是否成功

可以执行命令 $ docker run hello-world

 

或者可以使用小窗体命令走起

docker version 

 

 

  1. 使用docker pull xxx 命令来拉去mysql镜像。

    如何在docker里面安装MySQL?
  2. 使用docker镜像:(如果本地没有,会自动pull下来)

    docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 。

    如何在docker里面安装MySQL?
    重复启动会提示
  • 使用docker ps 命令, 可以看到容器里已经启动了MySQL。

     如果要导出容器, 用这个

$ docker export c1bd479a5346 > myredis

如果出现 bash: myredis: Permission denied, 检查c:\docker的安装目录是否有写入的权限

停止一个容器,要用docker stop [container id] ,不能用名字, Linux下可以用管道组合

docker ps | grep postgres | awk '{print $1}'

 docker push 可以提交你的镜像到你的dockerHub账户里

先到hub.docker.com 注册一个账号, 获得用户名,再建立一个仓库名
示例: 把一个redis镜像传到自己仓库

docker pull redis:5.0.4
docker tag redis:5.0.4 [用户名]/[仓库名]: redis5.0.4
docker push  [用户名]/[仓库名]: redis5.0.4

 

用以下命令,查看docker容器的资源占用情况:

docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"


我们安装一个 https://github.com/WangJunZzz/abp-vnext-pro 的开源软件

开源软件通常会包括一个docker-compose.yaml. 这个可以理解为多个docker 命令的组合的批处理. 用户拿到这个批处理语句,只要运行就能创建出一样的环境

1
2
3
cd d:/[docker-compose.yaml所在的目录]
 
docker-compose up --build

要注意检查  docker-compose.yaml 里面的端口密码是否和源代码里app.config里的是否一致.

比如这个mysql,对外的端口的3307,docker里的端口是3306, 但代码里是3306,结果老是连不上mysql,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3'
services:
  mysql:
    image: mysql:5.7.26
    # network_mode: "host" # 如果需要容器使用宿主机IP(内网IP),则可以配置此项
    container_name: abp-pro-mysql # 指定容器名称,如果不设置此参数,则由系统自动生成
    restart: always # 设置容器自启模式
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # 设置utf8字符集
    environment:
      - TZ=Asia/Shanghai # 设置容器时区与宿主机保持一致
      - MYSQL_ROOT_PASSWORD=1q2w3E* # 设置root密码
    volumes:
       - /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
    ports:
        - "3307:3306"
    networks:
      - lionAbpPro

 你可以打开KitMatic 查看Container的Access Url,这个就是外面访问的地址
 

 为了重新创建Mysql数据不会丢,应该把数据和配置文件通过Volumn映射到宿主机上面

1
2
3
4
5
volumes:
   - /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
   - ./dockerData/mysql/data:/var/lib/mysql  #将数据文件夹挂载到主机
   - ./dockerData/mysql/conf:/etc/mysql  #将配置文件夹挂在到主机
   - ./dockerData/mysql/log:/var/log/mysql  将日志文件夹挂载到主机

  

安装完mysql,可以安装DBeaver, 也可以安装NaviCat , 教程如下: https://www.cnblogs.com/522-1997/p/15033758.html 

现在代码都是用EF的Code First, 自然要找到DbMitgrator的项目,改一下connectstring,然后运行一下,生成数据库

abp-vnext-pro-main5\aspnet-core\services\src\Lion.AbpPro.DbMigrator\bin\Debug\net6.0\Lion.AbpPro.DbMigrator.exe

1
2
3
"ConnectionStrings": {
  "Default": "Data Source=localhost;Port=3307;Database=LionAbpProDB;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true"
}

 

RabbitMQ, 我记得之前是可以用Guest登录的 RabbitMQ Management, 但现在不行,登录到容器的CLI,运行下面的命令增加用户

rabbitmqctl  add_user XXX
rabbitmqctl  set_permissions  XXX ".*"  ".*"  ".*"    //赋予XXX读写所有消息队列的权限
rabbitmqctl  set_user_tags XXX administrator    //分配用户组

 

修改修改 HttpApi.Host-> appsettings.json 配置

 

  "ConnectionStrings": {
    "Default": "Data Source=localhost;Port=3307;Database=LionAbpProDB;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true"
  },
  "Redis": {
    "Configuration": "localhost:6380,password='',defaultdatabase=1"
  },

 

 

 折腾了2天,总算把后端的服务启动起来了. 

 

 

 =======================前端部分==================================

Vben 前端框架需要NodeJS. 但新版本只支持Window8.1 Server 2012以上, win7 只能下12.x的版本

https://nodejs.org/download/release/v12.22.8/ 

 还是说Node.js 我也是装在Docker上呢?

查看nodejs版本号

输入node -v

nodejs自带npm,所以不需要单独下载npm了。

查看npm安装路径

使用命令where npm

查看npm版本号

查看npm版本,输入npm -v

 

通过npm命令进行安装Yarn:

执行命令npm install yarn -g (后面的可选参数-g,g代表global全局安装的意思)

 

执行 npm run dev 就提示 ‘vite’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

先执行一下 npm i 安装必要的包, 安装到项目目录下的node_modules, 结果提示有一堆错误

用Yarn Install 

复制代码
npm淘宝镜像
## 镜像使用方法(三种办法任意一种都能解决问题)

#### 1.通过config命令

    npm configsetregistry https://registry.npm.taobao.orgnpm info

    underscore(如果上面配置正确这个命令会有字符串response)

#### 2.命令行指定

npm --registry https://registry.npm.taobao.org info underscore

#### 3.编辑~/.npmrc加入下面内容 (第三种,将配置写死,下次用的时候配置还在)

registry=https://registry.npm.taobao.org
复制代码

 

还是有错误

1
2
3
4
5
6
error eslint-define-config@1.2.0: The engine "node" is incompatible with this mo
dule. Expected version ">= 16.9.0". Got "12.22.8"
warning eslint-define-config@1.2.0: The engine "pnpm" appears to be invalid.
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this
command.
npm淘宝镜像 后,再用npm install 就安装成功了
1
2
3
4
5
6
7
added 1975 packages from 869 contributors and audited 1999 packages in 966.576s
 
181 packages are looking for funding
  run `npm fund` for details
 
found 66 vulnerabilities (62 moderate, 4 high)
  run `npm audit fix` to fix them, or `npm audit` for details

终于看到界面了

 

 但是输入账号密码,还是登录不了的???  F12看一下,还有个GateWay没有启动

 成功部署了.................... 看一下内存占用, 前后端占了1G, 但是看不到Docker占用的内存

 

 

----查看Docker占用的内存---  docker stats --no-stream

Redis,RabbitMq,mysql总共300m左右

------ 下一步把前后端都放进docker,看能否节约内存呢?

 

  

 

 

 

posted on   Gu  阅读(311)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
历史上的今天:
2018-12-18 paysoft 网关出现EntityRef:expecting;的错误。
点击右上角即可分享
微信分享提示