Docker(七) Docker开发工具与部署实战

编程入门 行业动态 更新时间:2024-10-09 09:12:15

Docker(七) Docker<a href=https://www.elefans.com/category/jswz/34/1770395.html style=开发工具与部署实战"/>

Docker(七) Docker开发工具与部署实战

一.Docker开发工具

1.IDEA连接远程SFTP

        Docker开发中,在Linux上书写时是没有提示和高亮的,对于开发来说不太方便。于是我们希望通过IDEA远程连接服务器,使用IDEA来开发和操作相关文件。

(1)IDEA安装Docker插件

 (2)远程连接SFTP

  打开IDEA远程连接窗口

   通过用户名和密码登录远程服务器

        连接成功后,就可以在IDEA中编辑,上传或下载服务器文档了 ,注意编辑文件后,一定要使用upload上传更新!

 2.使用Portainer可视化管理Docker

(1)拉取Portainer镜像

# docker pull  portainer/portainer

(2) 运行Portainer监控Docker引擎

# docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

 (3)登录并使用Portainer

 用浏览器访问:http://serverIp:9000 即可

二.Docker部署实战

        目标:使用docke-compose部署一个简单的springboot项目+连接mysql数据库,其中springboot项目以jar的形式打包。

1.SpringBoot项目打包上传到Linux

(1)SpringBoot连接MySql数据库的配置中,url使用容器名称或者服务名称或者容器ip,不要使用localhost

 (2)SpringBoot项目打包时,需添加skipTests跳过测试(否则数据库连接那里本地一直测试失败,导致打包不成功)

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!--添加配置跳过测试--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version><configuration><skipTests>true</skipTests></configuration></plugin><!--添加配置跳过测试--></plugins></build>

2.编写SpringBoot项目的Dockfile文件

FROM java:8WORKDIR /apps
EXPOSE 8989
COPY springboot-02-0.0.1-SNAPSHOT.jar /apps/alimama.jarENTRYPOINT ["java","-jar","alimama.jar"]

3.转储本地数据库的sql文件,保存为data.sql

4.编写docker-compose.yml编排文件

        为了实现mysql镜像在启动时就自动创建好数据库并导好数据,我们需要在docker-compose.yml文件中,实现以下几步:

  • MySql镜像的 MYSQL_DATABASE : 此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。
  • MySql镜像的 自动执行sql文件:当Mysql容器首次启动时,会在 /docker-entrypoint-initdb.d目录下扫描 .sh.sql.sql.gz类型的文件。如果这些类型的文件存在,将执行它们来初始化一个数据库。这些文件会按照字母的顺序执行。默认情况下它们会初始化在启动容器时声明的 MYSQL_DATABASE变量定义的数据库中。 因此我们可以使用 volume 将sql文件挂载到/docker-entrypoint-initdb.d目录
version: "3.9"services:alimama:build:context: .dockerfile: Dockerfilecontainer_name: alimamaports:- "8081:8989"networks:- web_bridgedepends_on:- mysql_webmysql:image: mysql:5.7container_name: mysqlports:- "3307:3306"volumes:- mysqldata:/var/lib/mysql- mysqlconf:/etc/mysql#sql文件挂载,启动时自动执行- /root/alimama/data.sql:/docker-entrypoint-initdb.d/data.sqlenvironment:- MYSQL_ROOT_PASSWORD=my060321#启动时创建默认数据库vue- MYSQL_DATABASE=vuenetworks:- web_bridge#指定mysql服务容器异常停止后的启动策略:总是重启restart: alwaysnetworks:web_bridge:volumes:mysqldata:mysqlconf:

5.文件整合

        将上述四个文件都放入同一个文档内,文档命名为项目名称,打包上传至Linux服务器中。

 6.docker-compose运行项目服务

        在当前项目文件夹下,运行 docker-compose up -d ,启动项目服务。注意:

  • 容器之间的通信,不需要通过映射端口,同网桥中使用原端口号即可
  • 镜像构建存在缓存,如果要重启服务或者有代码更新,需要使用docker-compose build --no-cache 或者 docker-compose up -d --build 重构服务,并建议删除原镜像重新拉取。
  • docker-compose build:只构建Dockerfile镜像并覆盖,不启动容器(如果存在缓存则使用镜像缓存层)
  • docker-compose build --no-cache:构建Dockerfile镜像并覆盖,不使用镜像缓存
  • docker-compose up -d:自动构建Dockerfile镜像,并启动容器。(如果镜像已存在则直接使用,不存在则拉取或者构建(使用缓存层))
  • docker-compose up -d --build:自动构建Dockerfile镜像,并启动容器。( 不论镜像是否存在都强制构建镜像,但使用缓存层)

因此,修改程序后,最好先通过docker-compose build --no-cache重构,再使用docker-compose up -d 启动运行服务

更多推荐

Docker(七) Docker开发工具与部署实战

本文发布于:2024-02-06 20:25:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1751205.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:开发工具   实战   Docker

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!