【黑马ai测试】linux命令+项目环境搭建+docker容器
linux命令+项目环境搭建+docker容器
一. 项目环境搭建部署
- 应用场景:在测试流程中,当开发提交可用测试版本后,需要搭建测试环境来运行代码包。企业级服务器测试环境通常使用Linux操作系统。
- 目标:
- 掌握基础Linux命令(约16个常用命令)
- 能够完成课上练习的项目环境搭建
由于每个公司的测试环境难易程度、搭建方式不同,如果环境搭建很复杂,可以寻求系统运维人员的帮助。
- 查日志
- 课程模块:
项目环境介绍
测试环境搭建
Linux常用命令扩展
Docker容器化部署
二、环境配置
下载这个安装包:
使用vmware打开这个文件夹里的文件:出现这种图片情况就是打开成功了。
账号:root
密码:123456
远程链接工具finalshell:
服务器ip地址查询输入:ifconfig
我的是192.168.88.129
打开成cmd窗口,ping一下这个ip看是否能成功:说明服务器能够连接上


成功连接显示:
三、项目环境介绍

定义:环境(Environment)是程序或系统运行时依赖的软件、硬件、网络等资源集合
三大要素:
软件:Nginx、MySQL、Maven、JDK、Redis等
硬件:云服务器、本地服务器等计算机设备
网络:域名、VPN、路由器等网络资源
类比说明:如同个人电脑需要硬件(主机)、软件(操作系统)和网络(宽带)共同组成使用环境

- 单体项目:
特点:所有功能模块集中部署在单一服务器
缺点:单点故障会导致整个系统不可用 - 分布式项目:
特点:将单体应用部署在多台服务器通过网络连接
优势:具备容错能力,某台服务器故障可自动切换
示例:智慧园区系统的数据库、Web服务器分离部署 - 微服务项目:
特点:将服务器系统拆分为独立的功能模块(微服务)
优势:单个服务故障不影响其他服务运行,切换成另一个度武器的功能块
现状:当前企业主流采用分布式或微服务架构
3.1为什么搭建环境

- 核心目的:模拟真实运行场景,验证功能和非功能需求
- 环境分类:
- 开发环境:开发人员本地使用的独立环境
- 测试环境:
本地测试环境:自测使用、或者和小伙伴使用一套
预发布环境:全流程(系统)测试用,无限接近生产环境,整个测试部门只有一个的环境 - 生产环境:用户实际使用的正式环境
3.2怎么搭建环境
企业常用云服务器(AWS/阿里云等)或自建机房
服务器:放在机房中没有显示器只有个主机,占地比较大,硬件配置很高(如64G内存、TB级存储)

- 核心步骤:
- 连接服务器:通过SSH等方式登录云服务器/物理服务器
- 安装软件:根据项目架构安装所需软件(如Nginx、JDK等)
- 上传项目包:部署开发提供的项目压缩包
- 配置修改:
Web服务器配置
数据库连接配置
项目参数调整 - 启动服务:运行项目相关进程和服务
- 系统验证:通过客户端或测试工具验证系统功能

四、Linux基础介绍
4.1服务器


[root@localhost ~]#:表示root用户登录到localhost服务器,当前在家目录
- [用户名@主机名 当前路径]:显示登录账号和服务器信息
- ~:表示用户家目录(用户默认工作目录)
- #/:命令提示符(#表示root管理员,$表示普通用户)
4.2linux简介

- 核心目录:
/etc:配置文件目录,存放应用服务配置
/bin:二进制目录,存放可直接运行的程序(类似Windows的.exe快捷方式)
/usr:默认软件安装目录(类似Windows的Program Files) - 用户目录:
/root:超级管理员专属目录
/home:普通用户目录 - 特殊目录:
/etc/security/cacerts:证书存放路径(固定目录)
4.3linux命令构成

- 基本结构:命令名[选项][参数]
- 命令名:表示命令的作用,必选(如:ls表示列出目录内容)
- 选项:按指定格式执行命令,可选(如:-l表示详细格式)
- 参数:命令操作对象,可选(如:/root表示操作目录路径)
- 示例命令:ls -l /root 表示以详细格式查看root目录下的文件
- 注意:
大小写敏感:必须严格区分大小写(如LS和ls是不同的命令)
光标控制:不支持鼠标操作,需用键盘方向键移动光标
注释方法:命令前加#会使命令不执行(如:# ls)

五、网络操作相关命令
5.1Linux基础应用
1. 测试场景引入

2. 网络与位置

- 命令:ifconfig或ip addr
- 关键信息:
网卡名称:ens33(常见默认网卡)
IP地址:inet后的地址(如192.168.17.134)
本地地址:lo网卡的127.0.0.1 - 检查本地电脑与服务器是否是通的:ping <IP/域名>,这个命令也可以ping外网比如www.baidu.com,适用于Windows/Mac/Linux所有操作系统
结果判断:
显示ttl=xx表示网络通畅
发送/接收包数量一致表示连接正常

如果ping不通,但是虚拟机确实是有网卡ip地址的,可以这样操作

-
特殊操作:
Linux需按Ctrl+C强制结束ping测试
测试前需确保知道目标IP地址(如192.168.17.134) -
当前操作的位置:pwd(Print Working Directory)

路径说明:
绝对路径:以/开头表示完整路径
相对路径:相对于当前目录的路径表示
- 命令:clear,清除终端屏幕内容
快捷键:Ctrl+L(效果相同)
类比命令:Windows下的cls命令
使用场景:当终端内容过多需要清理时使用
六、linux目录操作
linux目录操作1

- 命令格式:cd [路径]
- 常用操作:
cd …/:进入上级目录
cd 目录名:进入当前目录下的子目录
cd ~:快速返回当前用户的家目录 - 实用技巧:
使用Tab键自动补全路径
路径末端的"/"可省略
命令与参数之间必须有空格 - 注意:相对路径千万不要使用斜杠开头,会回到根目录被当做绝对路径
linux操作目录2

-
查看当前或指定目录内容
1)基本命令:ls 以列表形式查看当前或指定目录内容
路径参数:可指定目录路径,如ls /home/itheima查看特定目录
组合使用:ls -l /home查看/home目录的详细信息
2)选项说明
-a选项:显示所有文件(含隐藏文件),Linux隐藏文件以.开头
-l选项:显示文件详细信息,包括权限、所有者、大小、创建时间等
组合选项:ls -al或ls -la可同时显示隐藏文件和详细信息
颜色区分:蓝色显示为文件夹,非蓝色为普通文件 -
创建文件夹
基本命令:mkdir 目录名创建单个文件夹(如mkdir a)
批量创建:mkdir bb cc可同时创建多个同级文件夹
递归创建:mkdir -p a/b/c创建多级嵌套目录
命名限制:不能与现有文件/目录同名,支持中文命名
linux目录操作3
- 文件查找创建修改删除

-
命令格式:find [路径] -name “文件名”
-
路径参数:
不写路径时默认从当前目录开始查找
从根目录查找使用/作为路径
-name选项:按文件名进行查找 -
通配符使用:
*:匹配任意数量(含0个)的任意字符
?:匹配单个任意字符 -
查找示例:
查找所有.log文件:find /var/log -name “.log"
查找a开头的文件:find / -name "a”
查找三个字符且a开头的文件:find / -name “a??” -
记忆要点:
find命令用于查找文件位置
*匹配任意长度字符,?匹配单个字符
查找范围越大,耗时越长
知道部分文件名时使用通配符可以提高查找效率
- 文件操作


- 创建文件
命令格式:touch 文件名
批量创建:多个文件名用空格分隔,如touch a1.txt a2.txt
特性说明:
文件不存在时:创建新文件
文件已存在时:仅更新文件时间戳 - 修改文件名
命令格式:mv 旧文件名 新文件名
适用范围:可修改普通文件或文件夹名称
后缀处理:必须显式指定文件后缀,否则会移除原后缀 - 复制文件
命令格式:cp 源文件 目标文件
文件夹复制:必须添加-r参数(递归复制)
注意事项:不带-r参数时无法复制文件夹 - 删除文件
命令格式:rm [选项] 文件/目录
关键参数:
-r:删除目录(递归删除)
-f:强制删除(不提示确认)
危险警告:rm -rf删除后不可恢复,慎用!
文件内容查看及编辑

- cat命令适用场景:当文件内容较少(几行)时使用,直接显示全部内容
基本语法:cat 文件名,如演示中的cat anaconda-ks.cfg - less命令适用场景:当文件内容较多(几百/上千页)时使用,支持分页查看
翻页操作:
下一页:按f键
上一页:按b键
退出查看:按q键
结束标识:当显示(END)时表示已到达文件末尾
警告提示:首行可能显示警告信息,不影响正常内容查看

-
启动命令:vi 文件名(如vi test2.txt)
-
模式切换:
命令模式:初始模式,仅支持特定命令输入
输入模式:通过按i/a/o键进入,可自由编辑内容
末行模式:在命令模式下按:进入,用于保存或退出 -
异常处理:
修改后直接q会报错,需使用wq或q!
误操作时不要直接关闭窗口,应通过正规流程退出 -
验证方法:退出后使用cat、less命令查看文件确认修改结果
文件权限操作
1. 权限查看
- 基础命令:使用ls -l或简写ll查看文件/目录权限
输出结构:显示10列信息,首列表示类型,后9列表示权限
类型标识:
-:普通文件
d:目录文件
l:符号链接(需注意与颜色区分法的区别)
硬链接数:文件备份数 - 权限字段说明
- 权限字母:
r(read):读权限,数字代号4
w(write):写权限,数字代号2
x(execute):执行权限,数字代号1
-:无对应权限,数字代号0 - 权限分组:
前3位:文件拥有者权限
中3位:同组用户权限
后3位:其他用户权限 - 完整示例:
-rw-r–r–:普通文件,拥有者可读写,同组和其他用户只读
drwxrwxr-x:目录,拥有者和同组用户有全部权限,其他用户可读和执行
2. 权限修改

- 基础命令:chmod [选项] 三位数字 文件名
- 数字计算:
每位数字=对应权限值之和(如7=4+2+1表示rwx)
最大权限:777(所有角色全权限)
最小权限:000(所有角色无权限) - 典型场景:
可执行脚本:chmod 755 start.sh(拥有者rwx,其他用户rx)
配置文件:chmod 644 config.conf(拥有者rw,其他用户只读)


- 查找服务器ip地址

在本地电脑上ping这个ip,验证电脑是否与服务器相连接:

-
查看文件

-
创建文件

-
我是用的是vi,因为vim系统里没有,我尝试在vi存在的目录下下载vim工具,但是失败了,而且还停不下来ctrl+c,所以我使用了ctrl+/,停下来而且并不会有文件残留

-
查找到了



linux文件命令总结

七、tpshop项目部署
7.1步骤

7.2链接服务器
今天我们要搭建的就是单体项目,所有模块都在这一台服务器上。
服务器配置可在此处查看:
7.3软件下载安装
下载软件包命令
下载centos8以下使用yum,以上使用dnf进行下载。
检查并安装nginx、mysql、php

安装服务包采用系统控制命令:
systemctl start 服务包名(问开发、ai、运维)
查看已经安装的服务包名称,我的yum命令检查会出现这种情况:查了元宝说是这样的原因:
yum的工作逻辑是:先检查远程源的元数据是否过期,如果过期,就下载新的元数据;然后再执行你的命令(如 list installed)。而centos7官方不再维护,这些·清华源、阿里源将源地址更新搬动,也不会同步更新到centos7了,你的源地址失效,yum 无法获取到有效的索引,它会认为“本地缓存不可信”,于是陷入无限重试去下载这个索引。

可以跟着元宝操作,只需要保证后续不使用更新命令,就没问题,他会带着你恢复源的。我的就修复好了。
先执行备份旧源:
cd /etc/yum.repos.d
mkdir -p backup
mv *.repo backup/
再走到这个目录下写入这些内容
cd /etc/yum.repos.d
cat > CentOS-Base.repo << ‘EOF’
[C7.9.2009-base]
name=CentOS-7.9.2009 - Base - Vault
baseurl=https://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[C7.9.2009-updates]
name=CentOS-7.9.2009 - Updates - Vault
baseurl=https://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[C7.9.2009-extras]
name=CentOS-7.9.2009 - Extras - Vault
baseurl=https://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
EOF
再清理缓存
yum clean all
yum makecache

如果以后再工作中需要安装软件,最好是与ai交互
例如:我想在centos7上安装mysql5.7版本请问怎么操作

查询服务状态:停用、运行
systemctl status 服务名
nginx
mysqld
php-fpm

处于活跃运行状态
关掉之后处于不活跃(dead)状态
重新启动服务
同样的方法检查mysql和php,他们对应的服务名是mysqld、php-fpm

注:软件安装完成之后是不会自己启动的,需要你自己去使用命令启动
7.4配置项目文件
部署开发写好的程序包
找到这个文件
应用上传项目包

注:nginx官网上明确告知你,如果需要启动项目,默认项目路径是在/usr/share/nginx/html里面
直接敲一个rz,就会自动打开电脑目录:
如果觉得rz命令下载比较慢,还可以选择

上传到这里:
unzip tpshop.zip /usr/share/nginx/html
配置项目文件
在linux中配置文件一般后缀就是.conf,config
而mysql中配置文件一般后缀是cnf,这个先不做修改,我们后面有需要再修改
现在我们打开自己的服务器地址收出现的是index.html的内容,index文件一般默认为启动初始页面,怎么让服务器在启动项目时找到www打开项目呢?
这就涉及到修改配置文件了:我们先看一下服务器配置文件内容:后面有welcom to nginx!
cd /etc/nginx/conf.d
less default.conf
- isten 80;监听80端口(http):服务器正在等待外面用户以80的端口号来请求资源
- location:默认项目资料的位置
但是现在我们的项目文件在www下,所以我们要修改项目资料位置:
使用替换配置,先让旧的配置文件失效,再上传一个新的配置文件
失效:不能删文件、改名字不能失效,改后缀能失效
mv default.conf default.conf.bak(备份文件)
正常是这样的,但是我买的是别人配好的包了…,所以我把这个配置又修改为.bak1,然后才上传开发给我的新配置文件

接下来我们把开发提供的新的配置文件传上来:

项目配置文件存放位置查找:
路径是固定,linux服务官网查找介绍项目默认路径、配置默认路径
为了修改配置后确保使nginx服务生效,我们最好重启下nginx服务
因为我们现在的项目在www文件里面,所以我们还需要加上/index.php(index文件一般作为默认启动打开文件)来打开
看到以下这个文件就说明我们的配置文件没问题了。但是其实我的直接就可以输入192.168.88.129,他会自己帮我把路径加上。

这些文件都没有写入的权限甚至有些连读都没有,我们发现这些文件是www里面的,所以可以修改www文件夹下所有文件的权限。


注意:进入www上一级目录可以直接使用相对目录修改文件权限

7.5启动运行软件
注意:数据库密码要和开发代码里默认保存的一致
管理员密码随便写,建议写一个比较简单的。
其他的信息都不用去改
点击创建数据,email不用填写,他会把数据库里的那些表等等东西创建好

进入前台后台通过按钮:老师说进入之后内容是空的,但是我这个应该是别人配好的包了,emmm将就着做吧…,所以应该是数据库把数据表创建好了,页面显示没问题,但是内容、数据还没有配置

进入创建好的浏览器网页方式
前台后台按钮会消失,后面通过这种方式去进
前台地址浏览器输入:虚拟机IP 如果进不去+/index.php
后台地址浏览器输入:虚拟机IP/admin

7.6更新数据信息,验证整个系统
把初始数据导入到系统当中显示信息,把前期开发人员已经写好的数据库备份文件上传导入到数据库中,重启服务器,正常-p后面应该跟着密码的,但是后来在输入也是可以的
注意看命令数据和配置文件是对应上的


mysql软件的管理员账户也叫root,而linux系统的超级管理员root他俩不是一个东西
刷新后台页面出现数据
刷新前台页面没有数据,需要更新后台缓存之后再刷新


这下整个系统就全部启动运行完成了。
7.7总结

注意:软件下载安装找架构师确认,项目配置文件怎么修改需要配置什么找开发提供
可以查看一下前台页面的图片来源于哪里,我们采用F12调试工具,点击图片出现前端代码,可以看到我的图片路径来源是正确的,所以可以正确显示。
如果页面出现了这种情况,把抓包抓到的地址打开,发现服务器返回的图片就是这个
去咱们的linux上查查看:找到了数据来源发现是默认图片不显示商品信息的,但其实图片来源于后台代码中上架商品的路径下,里面有商品内容、商品图片等等信息,在upload里面,有两种解决办法:
- 可以把upload内容放在images里
- 删掉upload,将电脑上www.zip解压,把里面的upload再次上传到这个路径底下,做数据更新(采用这种)

这里我就不操作了,就是rm -f upload,然后rz上传
之后就是现在后台上更新一下缓存,前台上就有图片显示了(前台数据来源于后台缓存,所以要更新缓存)
八、linux高级命令
8.1过滤grep+|管道符




8.2重定向与追加


杀进程使用场景:当程序异常卡死的时候,可以使用top命令查询谁的内存占用最高,并杀掉这个进程

7、cat /var/log/messages | less 翻页查看文件
8、cat /var/log/messages | grep -n dhcp
8.3系统相关命令

进程:任何一个程序运行起来的状态,查看进程可以观察程序是否正常运行,因为linux很少使用可视化图标,并不能像windows一样查看下栏,还可以查服务(systemctl status 服务名)
当进程卡死的时候,使用top查看cpu、内存占用最高的且可杀的进程,使用命令:
kill -9 进程id号

静态此时此刻进程状态:
动态查看进程状态:
top



监听端口号:查看服务能不能和外界交互,服务器装软件很多服务类型的,客户端发送请求到服务端,需要使用端口号找到服务端接受的入口,也就是数据交互的出入口

服务器上端口号是唯一的,与外界交互的时候只有一个出入口,否则会与其他的冲突,查看端口是否被占用。如果被占用就不能配用这个端口,并且就会冲突无法启动:




被ssh占用了

实时日志:一边操作客户端(可开发辅助,也可自己),一边查看服务端日志(调试、复现bug),取出截图保存发给开发或自己看
“-数字”:代表查看行数,不输入数字默认显示10行
一般我们在定位前后端bug或者查看服务端日志,从.log文件开始查起,然后再去查找err
先使用tail -f www.log,然后使用enter敲出很多空格做分割线,再去操作



网上下载很多的linux压缩包都是.tar.gz,它解压只能用tar命令,tar命令只针对linux系统,zip三大系统都支持



九、docker介绍和安装
安装docker–>找镜像—>运行容器—>管理容器



1、安装docker

- 修改仓库配置文件
修改yum默认仓库,本来系统默认仓库配置文件指向官网(国外),下载安装很慢而且还需要你能访问外网,但是我们可以把仓库配置文件修改指向阿里云,他们再指向国外官网,阿里云的下载速度相对较快了
1、原有文件失效:sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
2、配置原来文件:sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、更新缓存【可选】:sudo yum clean all && sudo yum makecache
- 安装必要工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 - 配置阿里镜像源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo - 安装docker
yum -y install docker-ce docker-ce-cli containerd.io - 启动并设置开机自启
启动docker:sudo systemctl start docker
开机自启动:sudo systemctl enable docker - 查看版本号
docker --version
2、找镜像

想让镜像不要去找官网太慢了。直接去找国内的
将daemon.json放在/etc/docker/目录底下去
{
“registry-mirrors”: [
“https://docker.m.daocloud.io”,
“https://xp9seokj.mirror.aliyuncs.com”,
“https://docker.mirrors.ustc.edu.cn/”,
“https://hub-mirror.c.163.com/”,
“https://reg-mirror.qiniu.com”
]
}
配置好之后记得要再次重启一下服务
查看镜像命令:docker images
拉取某个服务的镜像,服务名后可以带版本号
有了镜像就相当于有了软件
docker命令和adb类型相似,都是最前面要带一个本名
docker pull mysql:5.7
docker pull nginx:1.26
docker pull python:3.10
3、运行容器
基于镜像启动容器,可配置端口映射、挂载目录、命名容器等
#常用参数示例:
#-d:后台运行容器
#-p主机端口:容器端口:映射端口(如-p 8000:80把容器80端口映射到主机8000)
#-v主机目录:容器目录:挂载文件/目录(如-v /data:/app/data)
#–name容器名:自定义容器名称
#示例:后台运行Nginx容器,映射80端口,命名为my-nginx
docker run-d-p 80:80–name my-nginx nginx
-p : 主机与容器的映射端口介绍:
-
端口映射是什么?
端口映射常用于docker容器中,就是将容器中的端口映射到主机上(宿主机指的是安装docker的主机) -
端口映射作用:
容器一般具有网络隔离性,端口映射就好比在宿主机和docker容器之间建起一座桥梁,使得外部网络借助端口映射可以访问到容器内部。 -
端口映射使用:
docker容器内拉取了nginx的镜像,并配置nginx服务在80端口上,在宿主机上选择88作为端口映射,在浏览器上通过主机ip:88即可访问docker容器内的nginx服务。
如果不使用-d,光标在不停闪烁,nginx服务在前台运行着:
通过映射端口88找到容器的nginx服务入口(nginx端口号是80),当停止的时候就没办法访问了,因为是前台运行


采用后台运行:
注意:一旦启动过就会存在,还需要删除一下


查看运行中的容器:docker ps
常用命令场景详解:
- yum对软件包进行安装及卸载:
yum install xxx
yum remove xxx - 使用systemctl进行查看应用服务状态:
systemctl status 服务名
status状态、restart重启(当服务配置更改后需要重启生效)、stop停止服务 - 压缩和解压缩:
zip -r xxx.zip 被压缩文件
unzip xxx.zip -d 文件路径 - 查看端口号:当客户端和服务端交互时须知道服务端的端口号,通过url访问该服务
netsat -anptu(查看所有服务端口号) | grep 服务名
查看端口号是否被占用:lsof -i:端口号,启动docker容器内服务的时候需要一个端口号来映射,需要先看看此端口是否被占用。 - 使用head、tail命令查看日志(定位bug,服务器上报错没提示)
head xxx
tai xxx
实时查看:tail -f xxx 不易复现、偶然出现的bug进行实时调试时查看当前日志
6、xxx | grep xxx 过滤内容,前面命令结果作为输入来过滤内容
管理容器
镜像启动起来会给我们一个长串的16进制id号,查看容器运行状态
镜像其实就相当于是windows系统的软件.exe,所以镜像id就相当于进程id。

查看容器的运行状态
镜像服务起来了,但是访问过程中容器出问题了。



运维人员需要深入学习:容器内部修改文件、操作内容内容时,使用进入容器命令:docker exec(execute) -it(交互) 容器名/id /bin/bash(简写可以bash)
容器相当于拷贝了一套完整的linux系统,目录结构是一样的,相当于独立于linux操作系统的小平台,里面会精简配置,只能操作一小部分的linux命令
4、总结:


十、项目部署扩展(docker)
10.1基础工作
systemctl status docker (running)
ps -aux | grep docker (查找到docker服务)
查看当前linux下有哪些镜像:
docker images == docker image ls


此时主机上有三个nginx服务,os上一个,端口80,容器上两个,一个使用88端口访问、另一个不能访问到,故先删除在给它配一个端口映射,操作完了可以使用80,88,99去访问不同的ngnix(docker容器之间是独立的),所以我们可以在电脑上部署多个项目,电商(80)、金融(88)、tpshopI(99),进去容器配置即可,当然是在你的电脑配置够用的情况下。



10.2进行项目部署
上传项目包(源代码),解压缩,进入文件

打镜像:将源代码按照开发的要求做成安装包(镜像)这个过程可能会很慢,因为python打镜像需要依赖很多库、工具、文件。

先启动数据库,启动项目、启动nginx
启动数据库:
sudo docker run -d --name db -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root123 -e MYSQL_DATABASE=flask_db mysql:5.7
启动项目:
sudo docker run -d --name app --link db:db -p 5000:5000 simple-flask-app
启动nginx:(这是一行命令打个空格接下一行命令)
sudo docker run -d --name nginx --link app:app -p 88:80 -v /root/flask_project/nginx.conf:/etc/nginx/conf.d/default.conf nginx:1.26
老师的没启动起来,估计是他的打镜像失败了,我刚开始也是失败了,然后多试了几次就成功了,查看容器,我的三个都启动起来了。
验证nginx,使用url访问:
验证数据库:

我们启动容器需要有顺序,还得一个一个启动,如果项目很复杂,那就会很麻烦,所以我们可以用到一个东西docker compose,可以一次性启动、定义多个容器,关闭多个容器
10.3docker compose介绍
docker.yml 是开发打包的时候要写好的配置文件。
我的操作一切正常:
chmod +x /usr/local/bin/docker-compose
docker-compose --version
打镜像和启动服务一步运行:cd /flask_project再执行因为有配置文件.yml
因为我已经做好了打镜像,所以我直接运行命令不加参数–build。如果你的打镜像失败了,就使用这个参数,
我已经启动过这些服务了,现在又启动了一遍所以才会呈现creatd,(erro),mysql启动起来是因为没有做接口映射,直接在3306端口开启了,容器之间相互独立,所以是可以开启的。
删除镜像文件使用 docker rmi 镜像名
十一、使用docker再次部署小项目,熟悉流程
首先我先删除镜像:
照着操作手册进行操作:
我们接下来要创建一个内网供docker容器内部交互数据docker network create mynetwork

1、分别启动服务
启动mysql,没安装过mysql:5.7版本也没事,因为它会自动给你安装。
docker run -d
–name mysql
–network mynetwork
-p 3307:3306
-e MYSQL_ROOT_PASSWORD=rootpass
-e MYSQL_DATABASE=testdb
-e MYSQL_USER=testuser
-e MYSQL_PASSWORD=userpass
-v $(pwd)/mysql-init.sql:/docker-entrypoint-initdb.d/init.sql
mysql:5.7

构建并运行 Flask 应用
docker run -d
–name flask
–network mynetwork
-e MYSQL_HOST=mysql
-e MYSQL_USER=testuser
-e MYSQL_PASSWORD=userpass
-e MYSQL_DB=testdb
–link mysql
-p 5000:5000
flask-app:1.0

运行 Nginx:
docker run -d
–name nginx
-v $(pwd)/web:/usr/share/nginx/html
-p 88:80
nginx:alpine


停止容器:
分别停止容器,再删除容器
docker stop nginx flask mysql
docker rm nginx flask mysql
或者强制停止所有当前运行容器并删除
docker rm -f $(docker ps -aq)

2、一键启动所有服务
注意先进入项目内部:找到有.yaml,yml的文件,这个文件是启动docker-compose命令的配置文件
服务开启,我已经通过数据库和网页访问确保mysql服务和nginx服务正常
如果想要终止容器,可以使用stop命令,移除rm命令,一键停止所有服务docker-compose down,不仅停止了,还删除了容器
十二、docker总结

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐






所有评论(0)