Docker基于镜像 可以秒级启动各种容器

发布时间:   来源:CSDN  

一、环境

虚拟机ip192.168.174.128 本地ip192.168.31.14 本地和虚拟机要互相ping通

二、Docker


(资料图片)

虚拟化容器技术。Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整的运行环境,容器之间互相隔离。 安装 docker Docker 安装文档:https://docs.docker.com/install/linux/docker-ce/centos/

1、卸载系统之前的 docker

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2、安装 Docker-CE

安装必须的依赖

sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2

设置 docker repo 的 yum 位置

sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo

安装 docker,以及 docker-cli

sudo yum install docker-ce docker-ce-cli containerd.io

3、启动 docker

sudo systemctl start docker

4、设置 docker 开机自启

sudo systemctl enable docker

5、测试 docker 常用命令,注意切换到 root 用户下

https://docs.docker.com/engine/reference/commandline/docker/

6、配置 docker 镜像加速

阿里云,容器镜像服务 针对 Docker 客户端版本大于 1.10.0 的用户 您可以通过修改 daemon 配置文件/etc/docker/daemon.json 来使用加速器

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-"EOF" {"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart

三、docker 安装 mysql

1、下载镜像文件

docker pull mysql:5.7

2、创建实例并启动

docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.7

参数说明

-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

MySQL 配置

vi /mydata/mysql/conf/my.cnf[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect="SET collation_connection = utf8_unicode_ci" init_connect="SET NAMES utf8" character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve

注意:解决 MySQL 连接慢的问题在配置文件中加入如下,并重启 mysql[mysqld]skip-name-resolve解释:skip-name-resolve:跳过域名解析

3、通过容器的 mysql 命令行工具连接

docker exec -it mysql mysql -uroot -proot

4、设置 root 远程访问

grant all privileges on *.* to "root"@"%" identified by "root" with grant option;flush privileges;

5、进入容器文件系统

docker exec -it mysql /bin/bash

四、docker 安装 redis

1、下载镜像文件

docker pull redis

2、创建实例并启动

mkdir -p /mydata/redis/conftouch /mydata/redis/conf/redis.conf

docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \-d redis redis-server /etc/redis/redis.conf

redis 自描述文件: https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf

3、使用 redis 镜像执行 redis-cli 命令连接

docker exec -it

五、开发环境统一(在maven的setting.xml修改两处配置)

1、Maven配置阿里云镜像

nexus-aliyuncentralNexus aliyunhttp://maven.aliyun.com/nexus/content/groups/public

2、配置 jdk1.8 编译项目

jdk-1.8true1.81.81.81.8

3、Idea&VsCode

idea 安装 lombok、mybatisx 插件Vscode 安装开发必备插件Vetur —— 语法高亮、智能感知、Emmet 等包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl需要同时按着)EsLint —— 语法纠错Auto Close Tag —— 自动闭合 HTML/XML 标签Auto Rename Tag —— 自动完成另一侧标签的同步修改JavaScript(ES6) code snippets — — ES6 语 法 智 能 提 示 以 及 快 速 输 入 , 除 js 外 还 支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式HTML Snippets —— html 快速自动补全Open in browser —— 浏览器快速打开Live Server —— 以内嵌服务器方式打开Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包

安装的插件

4、安装配置 git

①、下载 git;https://git-scm.com ②、配置 git,进入 git bash 配置用户名

git config --global user.name "username" //(名字)

配置邮箱

git config --global user.email "username@email.com" //(注册账号时用的邮箱)

③、配置 ssh 免密登录 https://gitee.com/help/articles/4181#article-header0 进入 git bash;使用:ssh-keygen -t rsa -C "xxxxx@xxxxx.com"命令。 连续三次回车。一般用户目录下会有下面两个文件。

或者 cat ~/.ssh/id_rsa.pub 登录进入 gitee,在设置里面找到 SSH KEY 将.pub 文件的内容粘贴进去 使用 ssh -T git@gitee.com 测试是否成功即可

Git+码云教程 https://gitee.com/help/articles/410

六、在码云创建仓库

项目拉下来之后

七、创建项目微服务

商品服务、仓储服务、订单服务、优惠券服务、用户服务 共同: 1)、web、openfeign 2)、每一个服务,包名 com.atguigu.gulimall.xxx(product/order/ware/coupon/member) 3)、模块名:gulimall-product

创建完各个模块之后的项目结构图

八、导入数据库

码云地址:https://gitee.com/GeneralKid/gulimail

九、人人项目

1、下载人人项目

在码云上搜索人人开源,我们使用renren-fast(后端)、renren-fast-vue(前端)项目。

https://gitee.com/renrenio

git clone https://gitee.com/renrenio/renren-fast.git    git clone https://gitee.com/renrenio/renren-fast-vue.git

下载到了桌面,我们把renren-fast移动到我们的项目文件夹(删掉.git文件),而renren-vue是用VSCode打开的(后面再弄)

在IDEA项目里的pom.xml添加一个renrnen-fast

gulimall-coupongulimall-membergulimall-ordergulimall-productgulimall-warerenren-fast

然后打开renren-fast/db/mysql.sql,复制全部,在sqlyog中创建库guli-admin,粘贴刚才的内容执行。

然后修改项目里renren-fast中的application.yml,修改application-dev.yml中的数库库的url,通常把localhost修改为192.168.174.128即可。

url: jdbc:mysql://192.168.174.128:3306/guli_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456

运行该java项目下的RenrenApplication

浏览器输入http://localhost:8080/renren-fast/ 得到{“msg”:“invalid token”,“code”:401}就代表无误

2、人人vue(npm)

用VSCode打开renren-fast-vue(如果自己搭建的话),如果是运行完整的代码,可以去课件里找gulimall-admin-vue-app

安装node:http://nodejs.cn/download/ 选择windows下载。下载完安装。

NPM是随同NodeJS一起安装的包管理工具。JavaScript-NPM类似于java-Maven。

命令行输入node -v检查配置好了,配置npm的镜像仓库地址,再执行

node -vnpm config set registry http://registry.npm.taobao.org/

然后去VScode的项目终端中输入 npm install,是要去拉取依赖(package.json类似于pom.xml的dependency),但是会报错

3、P16 npm install解决报错问题

摘自哔哩哔哩评论,亲测有效

关于新谷粒P16的前端项目使用npm install报错的问题,首先确保安装了python3.0以上版本,并配置全局变量其次大部分错误是报node-sass4.9.0安装失败。执行以下步骤可以完美解决首先把项目文件夹下的package.json里面的node-sass4.9.0改成4.9.2(不改可能也没关系,不过我改了,防止踩坑)然后项目文件夹下打开cmd命令窗口(和Visual Studio Code的终端命令是一样的)执行:npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/执行成功看看有没有报错,如果没报错执行下面命令npm install ,没报错就是安装成功,然后使用npm run dev 就ok了注:这么做得原理就是先单独从淘宝镜像吧nod-sass下载下来,然后再进行编译,因为这句命令好像是不成功的,(npm config set registry http://registry.npm.taobao.org/),默认从github下载,导致报错的如果之前安装失败的。先清理 缓存清理缓存:npm rebuild node-sassnpm uninstall node-sass

4、启动fast-vue项目

npm run dev

账号密码都是admin

十、人人项目-逆向工程

1、逆向工程搭建

git clone https://gitee.com/renrenio/renren-generator.git

下载到桌面后,同样把里面的.git文件删除,然后移动到我们IDEA项目目录中,同样配置好pom.xml

gulimall-coupongulimall-membergulimall-ordergulimall-productgulimall-warerenren-fastrenren-generator

在maven中刷新一下,reimport重新导入依赖。

修改application.yml

url: jdbc:mysql://192.168.174.128:3306/gulimall-pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456

然后修改generator.properties(这里乱码的百度IDEA设置properties编码)

# 主目录mainPath=com.atguigu#包名package=com.atguigu.gulimall#模块名moduleName=product#作者author=zxl#表前缀(类名不会包含表前缀) # 我们的pms数据库中的表的前缀都pms# 如果写了表前缀,每一张表对于的javaBean就不会添加前缀了tablePrefix=pms_

运行RenrenApplication。如果启动不成功,修改application中是port为801。访问http://localhost:801/

在网页上下方点击每页显示50个(pms库中的表),以让全部都显示,然后点击全部,点击生成代码。下载了压缩包

解压压缩包,把main放到gulimall-product的同级目录下。

2、common项目

然后在项目上右击(在项目上右击很重要)new modules— maven—然后在name上输入gulimall-common。

在pom.xml中也自动添加了gulimall-common

在common项目的pom.xml中添加

com.baomidoumybatis-plus-boot-starter3.3.2org.projectlomboklombok1.18.8org.apache.httpcomponentshttpcore4.4.13commons-langcommons-lang2.6

我们把每个微服务里公共的类和依赖放到common里。

然后在product项目中的pom.xml中加入下面内容,作为common的子项目

com.atguigu.gulimallgulimall-common0.0.1-SNAPSHOT

复制

renren-fast----utils包下的Query和PageUtils、R、Constant复制到common项目的java/com.atguigu.common.utils下。

把@RequiresPermissions这些注解掉,因为是shiro的

复制renren-fast中的xss包粘贴到common的com.atguigu.common目录下。

注释掉product项目下类中的//import org.apache.shiro.authz.annotation.RequiresPermissions;,这是shiro的东西

注释renren-generator\src\main\resources\template/Controller中所有的@RequiresPermissions。## import org.apache.shiro.authz.annotation.RequiresPermissions;

总之什么报错就去fast里面找。重启逆向工程。重新在页面上得到压缩包。重新解压出来,不过只把里面的controller复制粘贴到product项目对应的目录就行。

测试

测试与整合商品服务里的mybatisplus

在common的pom.xml中导入

mysqlmysql-connector-java8.0.17javax.servletservlet-api2.5provided

删掉common里xss/xssfiler和XssHttpServletRequestWrapper

在product项目的resources目录下新建application.yml

spring:  datasource:    username: root    password: root    url: jdbc:mysql://192.168.174.128:3306/gulimall-pms    driver-class-name: com.mysql.jdbc.Driver# MapperScan# sql映射文件位置mybatis-plus:  mapper-locations: classpath:/mapper/**/*.xml  global-config:    db-config:      id-type: auto

然而执行后能通过,但是数据库中文显示乱码,所以我模仿逆向工程,把上面的配置url改为

url: jdbc:mysql://192.168.174.128:3306/guli_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai

正常了。

然后在主启动类上加上注解@MapperScan()

@MapperScan("com.atguigu.gulimall.product.dao")@SpringBootApplicationpublic class gulimallProductApplication {public static void main(String[] args) {SpringApplication.run(gulimallProductApplication.class, args);    }}

然后去测试,先通过下面方法给数据库添加内容

@SpringBootTestclass gulimallProductApplicationTests {@Autowired    BrandService brandService;    @Test    void contextLoads() {BrandEntity brandEntity = new BrandEntity();        brandEntity.setDescript("哈哈1哈");        brandEntity.setName("华为");        brandService.save(brandEntity);        System.out.println("保存成功");    }}

在数据库中就能看到新增数据了

@SpringBootTestclass gulimallProductApplicationTests {@Autowired    BrandService brandService;    @Test    void contextLoads() {BrandEntity brandEntity = new BrandEntity();        brandEntity.setBrandId(1L);        brandEntity.setDescript("修改");        brandService.updateById(brandEntity);    }}

3、coupon

优惠券服务。重新打开generator逆向工程,修改generator.properties

# 主目录mainPath=com.atguigu#包名package=com.atguigu.gulimall#模块名moduleName=coupon#作者autho=zxl#表前缀(类名不会包含表前缀) # 我们的pms数据库中的表的前缀都pms# 如果写了表前缀,每一张表对于的javaBean就不会添加前缀了tablePrefix=sms_

修改yml数据库信息

spring:      datasource:        username: root        password: root        url: jdbc:mysql://192.168.174.128:3306/gulimall-sms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai        driver-class-name: com.mysql.cj.jdbc.Driver        mybatis-plus: mapper-locations: classpath:/mapper/**/*.xml global-config:   db-config:     id-type: auto     logic-delete-value: 1     logic-not-delete-value: 0    server:   port: 7000

其他项目以此类推,按照视频来做

相关文章Related

返回栏目>>