docker环境搭建

项目环境搭建

1、安装 Linux 虚拟机

(1)下载安装: VM VirtualBox

  • 下载安装:Downloads – Oracle VM VirtualBox,要先开启CPU虚拟化

在这里插入图片描述

在这里插入图片描述

(2)通过vagrant,在VirtualBox中安装虚拟机

  • 下载安装vagrant
    • 官方镜像仓库:https://app.vagrantup.com/boxes/search
    • vagrant 下载:
      • https://www.vagrantup.com/downloads.html
      • https://releases.hashicorp.com/vagrant/2.2.5/vagrant_2.2.5_x86_64.msi
  • 验证vagrant是否成功
vagrant
  • 使用命令快速创建虚拟机
Vagrant init centos/7
# 即初始化一个centos7系统 可在vagrant 镜像仓库官网查看对应的安装系统

在这里插入图片描述

(3)在Linux中安装Docker

  • 卸载旧版本
 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

sudo 超级管理员(最高权限)

  • 注册Docker地址
-- 1安装依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
-- 2docker安装地址
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安装docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 确认

  • 启动docker

sudo systemcli start docker
  • 检查
sudo docker images
  • 设置开机自启
sudo systemctl enable docker

2.配置阿里云镜像加速

  • 阿里云官网https://www.aliyun.com/activity/2024purchase/purchasing_v2/

  • 容器镜像服务/镜像加速器/centos

3.docker安装MYSQL

(1).指定版本下载

sudo docker pull mysql:5.7
// 不加冒号,现在最新版本
// 从docker官网搜索mysql,查看标签

2.检查镜像

sudo docker images

(3).启动容器

  • 在docker中启动一个容器,创建实例并启动
  • 每run 一下,就启动一个容器,容器间隔离
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 用户的密码
-d mysql:5.7 -d以后台方式运行,使镜像 mysql:5.7 启动容器
--name 设置容器名
/ 换行标
-e 改变一些参数
-v 将mysql的目录表挂载在 Linux外部位置,在外部可见
  • 切换 root 用户
su root
whoami //那个用户

(4).查看docker中容器

所有容器:docker images
正在运行的容器:docker ps

(5).进入docker中的某个容器(以交互模式)

docker exec -it containerID/容器名 /bin/bash
  • 参数说明
    • /bin/bash:bash控制台

(6).测试连接mysql

  • 使用navicat做链接测试

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

docker exec -it mysql mysql -uroot -proot
  • 设置 root远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

(7).进入mysql容器,并配置

  • 查看mysql安装位置
whereis mysql
-- 
mysql: 
/usr/bin/mysql 
/usr/lib/mysql 
/etc/mysql 配置文件
/usr/share/mysql
  • 进入配置文件
vi /mydata/mysql/conf/my.cnf
  • 按 i 进入插入模式
  • 插入配置,修改编码集,默认为拉丁
[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=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
  • 按 wq 保存退出
esc -> shift+: -> wq

(8).重启容器

-- 查看
docker ps
-- 重启
docker restart 容器名
-- 查看文件
cat 文件名

4.docker安装Redis

(1)下载最新版Redis

docker pull redis

(2)创建实例并启动

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-server加载redis.conf的方式启动

-d 后台运行
  • 实例前注意事项
redis.conf 配置文件实际是不存在的,需要在外部创建配置文件,再通过-d进行挂载
  • 实例前准备
-- 创建目录
mkdir -p /mydata/redis/conf
-- 进入目录
cd /mydata/redis/conf/
-- 创建redis.conf
touch redis.conf

(3) 使用 redis 镜像执行 redis-cli 命令测试连接

docker exec -it redis redis-cli

(4)redis持久化

-- 
pwd
-- 列表
ls
-- 修改文件
vi redis.conf
  • 添加 AOF 策略
appendonly yes
  • 重启redis容器
docker restart redis

开发环境统一配置

1.Maven

  • setting.xml 配置
-- 配置阿里云镜像
<mirrors>
    <mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>
-- 配置 jdk1.8编译项目 可以不配
<profiles>
    <profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
    </profile>
</profiles>

2.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 —— 中文语言包

3.安装配置 git

  • 详情见
https://blog.csdn.net/weixin_53903929/article/details/130624274

4.使用Git初始化仓库

  • 使用idea将项目交给 Git 进行版本控制

5.创建各个微服务项目

  • 创建5个模块
商品服务、仓储服务、订单服务、优惠券服务、用户服务
  • 相同点
1、web、openfeign
2、每一个服务,包名 com.lfg.xxx(product/order/ware/coupon/member)
3、模块名:glmall

6.使用Maven整合模块

  • 从模块中copy pom.xml
在glmall中添加pom.xml文件
  • 修改
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.lfg.glmall</groupId>
    <artifactId>glmall</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>glmall</name>
    <description>整合服务</description>
    <!-- 类型 -->
    <packaging>pom</packaging>
    <!-- 整合 -->
    <modules>
        <module>coupon</module>
        <module>member</module>
        <module>order</module>
        <module>product</module>
        <module>ware</module>
    </modules>
</project>

7.修改glmall中gitgnore模版

-- 忽略提交的文件
# glmall下的任意mvnw
**/mvnw
**/mvnw.cmd
**/.mvn
**/target/

# 同级的文件夹
.idea
**/.gitignore

8.提交、推送初始化项

容器设置跟随虚拟机重启

-- 查询docker中所所有容器
docker ps -a
-- 设置容器自动启动 
docker update 容器名 --restart=always
-- 重启虚拟机测试
-- 查看某个容器日志
docker logs -f 容器名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/564909.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

500道Python毕业设计题目推荐,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【Java基础】21.重写(Override)与重载(Overload)

文章目录 一、重写(Override)1.方法重写2.方法的重写规则3.Super 关键字的使用 二、重载(Overload)1.方法重载2.重载规则3.实例 三、重写与重载之间的区别 一、重写(Override) 1.方法重写 重写&#xff08;Override&#xff09;是指子类定义了一个与其父类中具有相同名称、参…

LeetCode - 150. 逆波兰表达式求值

LeetCode - 150. 逆波兰表达式求值 解题思路&#xff1a; 想要解决该题目&#xff0c;我们首先需要知道什么是逆波兰表达式&#xff0c;逆波兰表达式是一种后缀表达式&#xff0c;所谓后缀就是指算符写在后面。 我们平常使用的算式则是一种中缀表达式&#xff0c;如( 1 2 …

Spring基础 SpringAOP

前言 我们都知道Spring中最经典的两个功能就是IOC和AOP 我们之前也谈过SpringIOC的思想 容器编程思想了 今天我们来谈谈SpringAOP的思想 首先AOP被称之为面向切面编程 实际上面向切面编程是面向对象的编程的补充和完善 重点就是对某一类问题的集中处理 前面我们写的统一异常管理…

React Router 6 + Ant Design:构建基于角色的动态路由和菜单

要根据用户的角色生成不同的路由菜单并实现权限控制,你可以采取以下步骤: 定义路由配置 首先,你需要定义一个包含所有可能路由的配置文件,例如: const routes [{path: /dashboard,element: <DashboardPage />,roles: [admin, manager, user]},{path: /users,element:…

设计模式——模板方法

1)模板方法模式(Template Method Pattem)&#xff0c;又叫模板模式(Template Patern)&#xff0c;在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现&#xff0c;但调用将以抽象类中定义的方式进行。 2)简单说&#xff0c;模板方法模式 定义一个操作中…

Splashtop Cloud RADIUS 解决方案入围教育技术奖

2024年4月17日 加利福尼亚州库比蒂诺 Splashtop 在简化随处办公的远程解决方案领域处于领先地位&#xff0c;该公司自豪地宣布最近入围了《教育技术文摘》&#xff08;EdTech Digest&#xff09;的“2024年教育技术奖”的“炫酷工具”决赛。教育科技奖成立于2010年&#xff0c…

都2024 年了,可以卸载的VS Code 插件

在 VS Code 中&#xff0c;庞大的插件市场提供了丰富多样的扩展功能&#xff0c;以增强编码体验和效率。然而&#xff0c;如果你安装了很多插件&#xff0c;就可能会导致&#xff1a; 性能下降&#xff1a;过多的插件可能导致 VS Code 的启动速度变慢&#xff0c;特别是在启动或…

【自动驾驶车辆-运动控制】运动学模型(Kinematic Model) | 手写数学推导公式 by.Akaxi

【前言】 在设计自动驾驶规控算法时&#xff0c;常常需要获取车辆的各种位姿、角度等信息&#xff0c;要控制车辆的运动&#xff0c;首先要对车辆的运动建立数字化模型&#xff0c;模型建立的越准确&#xff0c;对车辆运动的描述越准确&#xff0c;对车辆的跟踪控制的效果就越…

【Leetcode笔记】236.二叉树的最近公共祖先

文章目录 题目要求ACM运行结果 题目要求 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能…

过滤器Filter和拦截器Interceptor心得

上一篇文章讲了监听器Listener&#xff0c;下面我们来讲一下过滤器和拦截器。 一、过滤器Filter。 首先&#xff0c;servlet容器&#xff08;比如tomcat&#xff09;肯定的要有servlet才能发挥它的光彩。在上古jsp时代&#xff0c;我们会写各种servlet通过不同的请求来实现我…

浅说深度优先搜索(中)——回溯

写在最前 相信在你们不懈的努力之下&#xff0c;基本的递归一定可以写出来了&#xff0c;那么我们现在就来看看递归的升级版——回溯怎么写吧&#xff01; 简说回溯 递归是一种特别重要的解题策略。大部分题目需要找到最优解&#xff0c;而这个求解过程可能存在一定的规律性…

排序算法之基数排序

目录 一、简介二、代码实现三、应用场景 一、简介 算法平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度排序方式稳定性基数排序O(n*k)O(n*k)O(n*k)O(nk)Out-place稳定 稳定&#xff1a;如果A原本在B前面&#xff0c;而AB&#xff0c;排序之后A仍然在B的前面&#xff1b…

03-为啥大模型LLM还没能完全替代你?

1 不具备记忆能力的 它是零状态的&#xff0c;我们平常在使用一些大模型产品&#xff0c;尤其在使用他们的API的时候&#xff0c;我们会发现那你和它对话&#xff0c;尤其是多轮对话的时候&#xff0c;经过一些轮次后&#xff0c;这些记忆就消失了&#xff0c;因为它也记不住那…

笔记本电脑坏了硬盘数据会丢失吗 笔记本电脑坏了如何取出硬盘的资料 数据恢复软件

笔记本电脑对我们真的非常重要了&#xff0c;是实现无纸化办公和学习的重要工具&#xff0c;但是如果笔记本电脑坏了我们存储在电脑里的资料该怎么办&#xff1f;笔记本电脑坏了硬盘数据会丢失吗&#xff1f;相信有许多朋友都会有这样的担忧。本文今天就为大家解决笔记本电脑坏…

Docker 的基本管理

一. 云的相关知识 1. 关于云 云端服务器都有哪些提供商&#xff1a; 国内&#xff1a; 阿里云&#xff08;Alibaba Cloud&#xff09;&#xff1a; 提供ECS&#xff08;Elastic Compute Service&#xff09;弹性计算服务&#xff0c;包括通用型、计算型、内存型等多种实例…

CodeGemma初探

什么是 CodeGemma CodeGemma是一系列强大而轻量级的模型的集合&#xff0c;可以执行各种编码任务&#xff0c;包括填充中间代码补全、代码生成、自然语言理解、数学推理和指令跟随。 版本&#xff1a; instruct&#xff1a;7B, 这个版本专门针对自然语言到代码聊天和指令跟随…

【Linux高性能服务器编程】——高性能服务器框架

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之高性能服务器框架介绍&#xff0c;在这篇文章中&#xff0c;你将会学习到高效的创建自己的高性能服务器&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘UML图来帮助大家来理解&…

解锁EDM设计秘籍:关键要素一览,邮件如何设计?

一个成功的EDM邮件需要包含多个关键元素&#xff0c;从内容、设计到呼唤行动&#xff0c;每个环节都至关重要。今天&#xff0c;我们就来探讨EDM邮件中应包含的关键元素&#xff1f;以及如何设计邮件&#xff1f; 一、EDM必备关键要素 1、吸引眼球的主题行 主题行应该简短明了…

NC398 腐烂的苹果

腐烂的苹果 一个腐烂的苹果每分钟可以向上下左右四个方向扩展&#xff0c;扩展之后&#xff0c;又会有新的腐烂的苹果&#xff0c;一直去腐蚀好的苹果&#xff0c;求多少分钟后&#xff0c;网格中全是烂苹果。 第一次做这道题的时候&#xff0c;想到这道题考察的其实是多源BFS…