docker练习记录(一)

初次使用docker记录一下

  • 设备和操作系统
  • 软件工具及环境
  • 安装docker
  • 使用docker自定义msyql镜像
  • 构建后台应用镜像
    • 运行
  • 安装nodejs
  • 构建前端项目镜像
  • 遗留

设备和操作系统

这里没有在本地尝试,直接搞来两台机器,阿里云或者腾讯云都可以,试用模式,只有一个月时限,不过拿来学习技术完全够用。
腾讯云的不够用单独开配置防火墙开端口,阿里云的要单独配置安全组,加入安全组才能访问对应端口。
搞定机器后得到两个公网ip。

使用的操作系统是linux

软件工具及环境

连接主机使用的是FinalShell,既可以传输文件,也可以敲命令,且是国产,贼好用。

本地机器安装有软件开发环境:java 1.8.202、nodejs 18
ide工具:idea 2021.3.3、vscode
版本工具:git
远程仓库是:gitee,也可以使用别的:github,gitlab,自建私服…
java项目工具:maven 3.8.6
数据库:mysql 8
数据库工具:mysql workbench
操作系统:win11

安装docker

安装docker是参照别人教程
安装docker教程
但是第一步得多安装个软件,不然后面启动会报错
yum install -y yum-utils device-mapper-persistent-data lvm2 libseccomp-devel
多安装libseccomp-devel
我使用的是阿里云的机器,运行 yum makecache fast时报参数错误
去掉fast即可

后面照着安装,到启动docker服务,就完成了。

使用docker自定义msyql镜像

参考教程
docker安装mysql
docker安装mysql

安装的时候,创建mysql用户的时候,ip写的是localhost,后台应用启动时连接数据库也是用localhost,然后就连接不上,写成ip就ok,应用中配置文件也是用的ip。

构建后台应用镜像

这里没有使用CD工具,自己写了个shell脚本。
首先配置好git:用户名,邮箱
生成ssh公钥,添加到gitee仓库。

然后就是仓库代码和脚本编写。
仓库代码
代码很简单,就一个学生表,两个接口,添加和查看列表
主要是里面的Dockerfile文件,构建镜像时需要。
看一眼Dockerfile:

FROM maven:3.8.1-jdk-8-slim as builder

# Copy local code to the container image.
WORKDIR /app
COPY pom.xml .
COPY src ./src

# Build a release artifact. skipTests不会跳过测试编译,下面的会
RUN mvn package -Dmaven.test.skip=true

# Run the web service on container startup.
CMD ["java","-jar","/app/target/web-demo-1.0.0.jar","--spring.profiles.active=prod"]

有个遗留问题:构建镜像的时候,会执行打包命令,使用的是中央仓库,有点慢,而且每次构建都会重复下载依赖包。

脚本:

#!/bin/sh
# 删除当前文件目标文件夹下的内容
echo "删除目录/data/git_repo/backend目录下的文件及文件夹"
rm -rf /data/git_repo/backend/*
echo "使用git从gitee拉取代码"
cd /data/git_repo/backend
git clone [email protected]:qkzztx_admin/web-demo.git
# 创建镜像
jar_suffix=$(date "+%Y%m%d%H%M%S")
echo "当前时间戳是$jar_suffix"
cd web-demo
echo "开始构建镜像"
docker build -t "web-demo:$jar_suffix" .
echo "镜像构建完毕"

脚本也简单,拉取代码,构建镜像,tag使用时间戳。

运行

运行是手动运行

# 查看所有容器
docker ps -a
# 停止容器 xxx 为容器名称
docker stop xxx
# 删除容器 xxx为容器id,可以只写前几位,能够识别一个就可以
docker rm xxx
# 查看镜像
docker images
# 删除镜像xxxx是镜像名称,yyyy是镜像tag。当然也可以不用名称+tag,直接写镜像id
docker rmi xxxx:yyyy
# 创建并运行一个新容器,xxxx是构建镜像时的tag,也就是那个时间戳
docker run -itd --name backend -p:8080:8080 web-demo:xxxxx

运行之后,可以使用浏览器查看get请求,也可以使用postman之类的工具调用接口

安装nodejs

使用yum安装的nodejs版本只有10,落后太多了,可以在nodejs官网下载最新版linux压缩包
安装nodejs教程
从nodjes官网下载压缩包后,使用finalshell传到机器上
然后从教程的第三步:三 解压、改目录名字、查看版本,开始即可
然后是nodejs的配置,配置国内镜像源。
顺便升级下npm版本

构建前端项目镜像

前端项目一个简单的vue项目,只有一个页面。
基于nginx构建。
前端demo仓库
里面主要有两个文件:nginx.conf、Dockerfile。
依然是自己写个shell脚本,拉取代码,编译,构建。

#!/bin/sh
echo "清理工作目录"
rm -rf /data/git_repo/frontend/*
echo "进入工作目录/data/git_repo/frontend"
cd /data/git_repo/frontend
echo "开始拉取代码"
git clone [email protected]:qkzztx_admin/web-demo-frontend.git
# 构建镜像
cd web-demo-frontend
image_suffix=$(date "+%Y%m%d%H%M%S")
echo "当前时间戳是$image_suffix"
# 先安装
npm install
# 再编译
npm run build
# 然后构建
docker build -t "web-demo-frontend:$image_suffix" .

依然是手动查看镜像,运行。

使用浏览器直接访问对应ip:端口。

遗留

要学的太多了,一点点拣着学
1、docker compose
2、数据库备份,挂载数据
3、应用日志处理

你可能感兴趣的:(docker,练习,学习,docker)