展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

docker hub使用技巧

案例一

  • docker创建MySQL容器,MySQL容器中创建数据库和表并添加数据,将该容器提交为自己的镜像推送到docker hub,之后要使用该数据库只需拉取该镜像即可

  • 首先在Linux上我们有一个MySQL容器,容器中有数据库和表

  • 我们在该容器运行状态下提交为自己的镜像

# 方式一:提交并重新标记
docker commit -a="chniny" -m="dbtest" 53724a20a48c dbtest:1.0
docker tag dbtest:1.0 chniny/dbtest:1.0

# 方式二:提交时直接指定作者
docker commit -a="chniny" -m="dbtest" 53724a20a48c chniny/dbtest:1.0

  • 登录docker hub并推送
docker login

docker push chniny/dbtest:1.0

  • 推送成功后查看

  • 之后我们将Linux服务器上的MySQL容器和镜像删除,重新拉取验证镜像是否可用

  • 拉取失败报错:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled

  • 解决方案:配置国内镜像源,参考

# 拉取
docker pull chniny/dbtest:1.0
# 启动
docker run -p 3306:3306 --name mysql -v /home/mydocker/mysql/conf:/etc/mysql/conf.d -v /home/mydocker/mysql/logs:/logs -v /home/mydocker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d chniny/dbtest:1.0

  • 用idea或navicat连接mysql

案例二

  • spring boot项目打成war包部署到tomcat容器
点击查看详情
  • 首先准备一个后端项目,案例地址
  • 参考这篇博客的案例二
  • 本地测试:

  • 上传到服务器的tomca测试:
docker pull chniny/tomcat:8
docker run -d -p 8080:8080 chniny/tomcat:8
# 将war包上传到服务器
# 将war复制到tomcat容器
docker cp back01.war container_ID:/usr/local/tomcat/webapps
# 重启容器


# 访问时报500错误,查看tomcat容器的日志发现报错信息:The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received
# 错误原因:JDBC版本与MySQL版本不兼容,MySQL的版本更高一些,在连接语句后加上useSSL=true
# 再次部署依然报错,暂时没有解决
  • 试错2
# 拉取tomcat+mysql镜像 
docker pull aallam/tomcat-mysql:latest
# 启动
docker run -d --name="tomcat-mysql-run" -e MYSQL_PASSWORD=root -p 3306:3306 -p 8080:8080 aallam/tomcat-mysql
# 进入容器后,连接mysql不需要密码,直接回测
mysql -u root -p 
# 创建数据库,创建后无法导入sql脚本
create database back01;
# 用idea连接mysql,用户名和密码为root,之后在idea上创建表,添加数据

# 在容器的根目录中查找tomcat的目录
find / -name webapps
# 将war包放到容器中,重启容器
docker cp back01.war container_ID:/opt/tomcat/webapps
  • 本地测试
  • 远程测试
  • 查看日志,依然报错
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from

案例三

  • 方式一:cloud项目打成war包部署到多个tomcat容器
    参考1
    参考2
    参考2

  • 方式二:cloud项目的每个模块打成jar包,部署到jdk容器

案例四

  • vite2 + vue3 + router + axios打成镜像
  • 案例地址
  • 参考
  • 当前项目使用了router,使用了历史路由
import {createRouter, createWebHashHistory} from 'vue-router';
import welcome from "../view/Welcome.vue";
const routes = [
    {path: "/", redirect: '/welcome'},
    { path: "/welcome", component: welcome },
]
export default  createRouter({
    history: createWebHashHistory(),
    routes 
})
  • 使用了axios,配置的接口ip是写死的,若要部署到不同的服务器,就要每次重新配置后构建镜像
import axios from "axios";
import qs from "qs";

// 默认路由
axios.defaults.baseURL = 'http://192.168.1.5:8080'
//post请求头
axios.defaults.headers.post["Content-Type"] ="application/x-www-form-urlencoded;charset=UTF-8";
//设置超时
axios.defaults.timeout = 10000;
  • vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()]
})
  • 之后上传到Linux服务器,使用nginx镜像 + Dockerfile构建镜像
  • 测试
posted @ 2021-12-23 17:07  DogLeftover  阅读(57)  评论(0编辑  收藏  举报