IDEA部署Docker镜像的实现示例

 更新时间:2023年04月28日 09:05:54   作者:摘星辰  
本文主要介绍了IDEA部署Docker镜像的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Docker

开启虚拟机,打开 finalshell 客户端

  • 开启docker service docker start

镜像操作

  • 查看镜像 docker images
  • 搜索镜像 docker serarch 镜像名
  • 拉取镜像 docker pull 镜像名:标签号 例如: docker pull mysql:5.7.26
  • 删除镜像 docker rmi 镜像ID/名称

容器操作

  • 查询容器 docker ps , 查看所有容器docker ps -a

  • 删除容器 docker rm 容器ID/容器名

  • 开启容器 docker start 容器ID/容器名

  • 停止容器 docker stop 容器ID/容器名

  • 进入容器操作 docker exec -it 容器ID bash

  • 查看容器日志 docker logs Name/ID

  • 拷贝文件到宿主机 docker cp -a bb397b55cde0:/tmp/ /tmp

  • 拷贝文件到容器 docker cp -a /tmp bb397b55cde0:/tmp/

开启Docker的远程连接

  • 编辑文件 docker.service

    vi /usr/lib/systemd/system/docker.service

    找到 ExecStart=/usr/bin/dockerd这一行

    将其改为如下内容:

    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

  • 重新加载配置文件

    systemctl daemon-reload

  • 重启docker

    systemctl restart docker

  • 查看 2375 端口是否开放

    netstat -nlpt

    也可以直接访问 curl http://127.0.0.1:2375/info,如果有返回信息,则已开放

IDEA 下载 插件

PS:总觉得这个插件有bug,如在 容器里设置了参数不生效。。。

在 Settings->Plugins->Marketplace 搜索 docker

image-20201216155142769

安装完重启 IDEA

然后在 Settings 里搜索 docker ,配置上docker 地址,下面显示 successful 即连接成功

image-20201216155406515

在 IDEA 页面的下面 有个 docker 的按钮,点开可以看到docker里所有的容器,所有的镜像

image-20201216155742277

IDEA 推送镜像

首先maven clean 清理本地代码

maven package 打包本地项目,生成 jar

在 DockerFile 页面,编辑

image-20201216160324772

/usr/share/fonts/dejavu/

如果需要 docker里的mysql ,则 在配置文件里 这样写即可:

url: jdbc:mysql://mysql:3306/DBname?characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai

点击运行就可以将上面生成的 jar 打包成 docker 镜像,并上传到 docker 里。

如果项目依赖较多,需要较长时间

在IDEA 控制台就可以看到上传成功的 镜像,可以新建容器,运行

在IDEA 控制台也可以配置 容器的参数,比如端口映射,挂载文件,启动日志等,十分方便。

就酱,后台项目就启动完成了,物理机访问虚拟机ip 加上映射出来的端口号就可以访问到接口了

不过,仅能访问后台接口不是我们最终要的效果,得有界面啊!

安装MySQL

  • 拉取镜像docker pull mysql:5.7.26

  • 启动docker run -p 3306:3306 --name mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26

  • 配置外网访问

    进入容器 docker exec -it 47e74a93cf87 bash

    登录mysql -uroot -p输入密码

    命令 grant all privileges on *.* to root@"%" identified by "123456" with grant option;

    刷新 flush privileges;

    之后就可以我们就可以在物理机上通过nvicate 来连接上。

安装nginx

拉取镜像: docker pull nginx

查看镜像: docker images

在宿主机创建配置文件目录

mkdir -p /data/nginx/{conf,conf.d,html,log}

nginx.conf

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            index  index.html index.htm;
            root /usr/share/nginx/html;
             charset utf-8;
              try_files $uri $uri/ /index.html;
        }
        	location ^~/api/ {
              proxy_pass http://192.168.1.130:8080/;
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>docker搭建nginx</title>
</head>
<body>
    <h1>docker搭建nginx映射成功</h1>
</body>
</html>

启动并挂载配置文件目录

docker run --name my_nginx -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/log:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html nginx

在物理机访问 虚拟机ip ,看是否成功

重启nginxdocker restart 容器ID

部署项目

  • 将前端项目,build ,将生成的 dist 文件夹里的内容上传到 html 目录
  • 在 nginx.conf 配置文件里配置后台接口地址
  • 访问nginx 服务器ip,测试是否可以访问。

远程访问

经过上面的操作,我们已经可以在本地跑起来idea 里的项目了,在idea控制台也可以直接看到项目的运行日志。

那么,如果我们要给领导或者客户看项目的进度怎么办?

可以使用 内网穿透,将局域网的 ip 映射出去。

之前使用的 ngrok.cc, 免费的总是断,体验不是很好。推荐一个稳定点的。utools,里面有内网穿透的功能,目前来说还是挺快挺好用的。

使用界面如下图所示:

完结撒花~~

image-20201216180509153

Docker 容器中文字体乱码问题

​在宿主机内安装中文字体

查看已经安装的中文字体 fc-list :lang=zh

如果没有这个命令,安装上 yum -y install fontconfig

将Windows 上的 C:\Windows\Fonts 文件夹下的字体文件上传到 服务器目录 /usr/share/fonts/dejavu/

​比如 : 宋体字 (simsun.ttc)

清除缓存 fc-cache

然后在需要中文字体的容器里挂载宿主机的 字体文件, ==,冒号前为宿主主机目录,冒号后为容器对应目录==

docker run -p 80:80--name demo -v /usr/share/fonts/dejavu/:/usr/share/fonts/

到此这篇关于IDEA部署Docker镜像的实现示例的文章就介绍到这了,更多相关IDEA部署Docker镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java线程池使用场景及一些建议

    java线程池使用场景及一些建议

    本文主要介绍了java线程池使用场景及一些建议,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java多线程用法的实例详解

    Java多线程用法的实例详解

    这篇文章主要介绍了Java多线程用法的实例详解的相关资料,希望通过本文大家能够理解掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • Spring源码解析后置处理器梳理总结

    Spring源码解析后置处理器梳理总结

    这篇文章主要介绍了Spring源码解析后置处理器梳理总结,在前面几篇文章中梳理了Spring中bean的创建过程,在这个过程中各式各样的后置处理器发挥了不同的作用,可以说后置处理器贯穿了bean的实例化以及初始化过程
    2022-07-07
  • IntelliJ IDEA(2019)安装破解及HelloWorld案例(图文)

    IntelliJ IDEA(2019)安装破解及HelloWorld案例(图文)

    这篇文章主要介绍了IntelliJ IDEA(2019)安装破解及HelloWorld案例(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Struts2中接收表单数据的三种驱动方式

    Struts2中接收表单数据的三种驱动方式

    这篇文章简单给大家介绍了Struts2中接收表单数据的三种驱动方式,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-07-07
  • 深入理解什么是Mybatis懒加载(延迟加载)

    深入理解什么是Mybatis懒加载(延迟加载)

    这篇文章主要介绍了深入理解什么是Mybatis懒加载(延迟加载),mybatis的懒加载,也称为延迟加载,是指在进行关联查询的时候,按照设置延迟规则推迟对关联对象的select查询,延迟加载可以有效的减少数据库压力,需要的朋友可以参考下
    2023-10-10
  • springboot集成screw反向生成数据库说明文档

    springboot集成screw反向生成数据库说明文档

    screw是一个一键式生成数据库文档的开源工具包,目前screw可以生成word、md和html格式类的文档,本文主要来讲讲如何通过screw反向生成数据库说明文档,感兴趣的可以了解下
    2025-01-01
  • 简单了解Java多线程实现的四种方式

    简单了解Java多线程实现的四种方式

    这篇文章主要介绍了简单了解Java多线程实现的四种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 简单理解Spring之IOC和AOP及代码示例

    简单理解Spring之IOC和AOP及代码示例

    这篇文章主要介绍了简单理解Spring之IOC和AOP及代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • SpringCloud搭建Eureka服务模块的过程

    SpringCloud搭建Eureka服务模块的过程

    Eureka在分布式系统中起到了连接各个微服务的纽带作用,使得服务之间的交互变得更加灵活、可靠,本文将深入探讨如何使用Spring Cloud,逐步引导读者完成Eureka服务模块的搭建,感兴趣的朋友跟随小编一起看看吧
    2024-02-02

最新评论