docker环境搭建

server/2024/9/23 12:28:39/

项目环境搭建

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
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemcli start docker
  • 检查
sudo docker images
  • 设置开机自启
sudo systemctl enable docker

2.配置阿里云镜像加速

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

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

dockerMYSQL_96">3.docker安装MYSQL

(1).指定版本下载

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

2.检查镜像

sudo docker images

(3).启动容器

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 //那个用户

docker_148">(4).查看docker容器

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

docker_155">(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 文件名

dockerRedis_233">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
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 容器

http://www.ppmy.cn/server/15925.html

相关文章

【Vue】Vue中使一个div铺满全屏

在Vue中实现div全屏铺满的方式与纯CSS实现类似&#xff0c;只是在Vue组件中应用CSS的方式略有不同。 最近在项目开发中&#xff0c;就遇到了这个问题&#xff0c;特此记录一下&#xff0c;方便大伙避坑。 有这么一段代码&#xff1a; <template><div class"fu…

Java,Python和Go语言语法差异对比

前段时间一直在找工作&#xff0c;比较颓废&#xff0c;很长时间都没有更新博客了&#xff0c;最近公司的项目需要用到Python语言和Go语言&#xff0c; 所以又重新学习了一下Python语言和Go语言&#xff0c;现在做一些总结&#xff0c;方便以后复习使用&#xff0c;同时也给其他…

Tomcat设计思路

1. 核心功能 HTTP请求处理&#xff1a;设计一个能够接收HTTP请求并进行分发的核心模块。 Servlet生命周期管理&#xff1a;实现Servlet的生命周期管理&#xff0c;包括初始化、销毁等功能。 线程池支持&#xff1a;为每个HTTP请求分配一个独立的线程&#xff0c;以提高并发处…

【MIT6.824】lab3 Fault-tolerant Key/Value Service 实现笔记

引言 lab3A的实验要求如下&#xff1a; Your first task is to implement a solution that works when there are no dropped messages, and no failed servers. You’ll need to add RPC-sending code to the Clerk Put/Append/Get methods in client.go, and implement Pu…

网络编程——TCP的特性之自动重传/流量控制/拥塞控制,一篇说清楚

文章目录 1. ARQ自动重传协议1.1 停止等待ARQ1.2 连续ARQ1.3 总结 2. TCP的流量控制3. TCP的拥塞控制3.1 慢开始算法3.2 拥塞避免算法3.3 快重传算法3.4 快恢复算法 1. ARQ自动重传协议 自动重传请求&#xff08;Automatic Repeat-reQuest&#xff09;&#xff0c;通过使用确认…

算法学习笔记Day8——回溯算法

本文解决几个问题&#xff1a; 回溯算法是什么&#xff1f;解决回溯算法相关的问题有什么技巧&#xff1f;回溯算法代码是否有规律可循&#xff1f; 一、介绍 1.回溯算法是什么&#xff1f; 回溯算法就是个多叉树的遍历问题&#xff0c;关键在于在前序和后序时间点做一些操作…

【详细讲解CentOS常用的命令】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

抖音小店没有流量怎么办?这两点做对!别人羡慕你赚的盆满钵满

哈喽~我是电商月月 电商行业&#xff0c;说一句实在的话&#xff0c;每一年都有一批人说电商不好做&#xff0c;但每一年都有人从电商行业赚到钱 做抖音小店没流量出不出单的原因其实很简单&#xff0c;就是思维不同&#xff0c;导致的结果差异 我们做抖店并不是赚一单就满足…