社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

再见命令行!一键部署应用到远程服务器,IDEA官方Docker插件真香!

运维 • 2 年前 • 361 次点击  
来自公众号:macrozheng

Docker作为目前主流的容器技术,使用它部署应用是非常方便的!对于这款主流容器技术,IDEA官方自然也是有所支持的。最近体验了一把IDEA官方提供的插件,确实非常好用,今天我们以SpringBoot应用的打包部署为例,来聊聊IDEA官方Docker插件的使用!

插件启用

  • 由于该插件为IDEA内置插件,直接在插件设置中启用就好了;
  • 由于我们的Docker环境部署在远程服务器上,还需要配置下Docker的连接信息,在Docker设置里配置即可,看到连接成功提示后就表示配置正确了;
  • 接下来打开IDEA底部的Services面板,双击Docker图标进行连接,连接成功后就可以对远程服务器上的Docker容器和镜像进行管理了。

镜像管理

  • 点击Images按钮,输入需要下载的镜像名称和版本号就可以下载镜像了,这里IDEA还支持自动提示,实在太贴心了!
  • 右键指定镜像打开菜单,我们还可以对其进行创建容器、查看、删除等常规操作;
  • 当然我们还可以使用Dockerfile来构建自己的镜像,这里以我的mall-tiny 脚手架项目为例,首先准备好Dockerfile脚本;
# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的jar包复制到docker容器的/目录下
ADD ./mall-tiny-1.0.0-SNAPSHOT.jar /mall-tiny-1.0.0-SNAPSHOT.jar
# 声明服务运行在8080端口
EXPOSE 8080
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java""-jar","/mall-tiny-1.0.0-SNAPSHOT.jar"]
# 指定维护者的名字
MAINTAINER macrozheng
  • 然后打开Dockfile文件,点击左侧按钮选择创建新的运行配置;
  • 接下来选择我们配置好的远程Docker服务,配置好应用打包目录及镜像名称;
  • 然后选择打包镜像,控制台将输出如下日志,jar包会直接上传到远程服务器并打包成镜像。

容器管理

  • 右键镜像打开菜单,还可以直接创建容器;
  • 由于mall-tiny项目需要用到mysql和redis服务,我们可以先启动它们;
  • 然后修改创建容器的配置,主要就是一些之前使用docker run命令的指定的一些配置;
  • 大家直接对照下之前使用的docker run命令,大概就能知道这些配置的作用了;
docker run -p 8080:8080 --name mall-tiny \
--link mysql:db \
--link redis:redis \
-e 'spring.profiles.active'=prod \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-tiny/logs:/var/logs \
-d mall-tiny/mall-tiny:1.0.0-SNAPSHOT
  • 运行过程中可以直接在Log标签中查看容器的运行日志,这确实很方便!

与容器交互

  • 通过容器面板我们可以查看到很多容器内部信息,比如查看环境变量;
  • 还可以查看容器的端口映射配置;
  • 还可以查看之前通过docker inspect命令获取的信息,比如查看容器运行的IP地址;
  • 还可以直接进入容器内部去执行命令,还记得之前使用的docker exec -it命令么。

Docker Compose 支持

  • 使用该插件也可以通过Docker Compose来部署应用,首先创建docker-compose.yml文件,由于mysql容器没有使用Docker Compose来创建,这里改用IP来访问;
version:


    
 '3'
services:
  redis:
    image: redis:5
    container_name: redis-tiny
    command: redis-server --appendonly yes
    volumes:
      - /mydata/redis-tiny/data:/data #数据文件挂载
    ports:
      - 6379:6379
  mall-tiny:
    image: mall-tiny/mall-tiny:1.0.0-SNAPSHOT
    container_name: mall-tiny
    links:
      - redis:redis
    depends_on:
      - redis
    ports:
      - 8080:8080
    environment:
      - 'spring.profiles.active=prod'
      -  'spring.datasource.url=jdbc:mysql://192.168.3.105:3306/mall_tiny?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false'
      - 'spring.redis.host=redis'
    volumes:
      - /etc/localtime:/etc/localtime
      - /mydata/app/mall-tiny/logs:/var/logs
  • 然后直接点击docker-compose.yml文件箭头即可将应用部署到远程服务器,确实很方便!
  • 部署完成后即可访问项目的Swagger页面,访问地址:http://192.168.3.105:8080/swagger-ui/

总结

今天体验了一把IDEA的官方Docker插件,不使用命令行就可以实现远程Docker镜像与容器的管理,还支持Docker Compose部署,功能确实很强大!在平时开发过程中,使用这款插件来打包、部署、运行SpringBoot应用确实很方便,感兴趣的小伙伴可以尝试下它!

参考资料

官方文档:https://www.jetbrains.com/help/idea/docker.html

项目源码地址

https://github.com/macrozheng/mall-tiny

--- EOF ---


推荐↓↓↓
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/138584
 
361 次点击