IDEA连接Docker部署微服务项目至阿里云服务器流程
背景:阿里云服务器,使用IDEA,并且配置好docker-maven插件
-
服务器安装Docker,并开放连接端口
-
阿里云开放安全组2375端口,并设置ip限制
-
IDEA首先需要连接Docker,file -> settings -> 搜索Docker
-
parent工程配置pom插件
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<!-- 默认关掉单元测试,不用手动关闭了 -->
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
- 子项目服务配置插件和docker连接,只需要修改ip和端口
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 指定该 Main Class 为全局的唯一入口 -->
<mainClass>com.dorking.eureka.EurekaApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<!-- 将依赖到的包都放进去 -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>${project.artifactId}</imageName>
<baseImage>openjdk:8-jdk-alpine</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}
</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://<!--ip-->:<!--port--></dockerHost>
</configuration>
</plugin>
</plugins>
- 点击右边maven 的parent 执行clean命令 然后执行package,将所有微服务打包
- 分别对每一个微服务点击右侧插件栏创建镜像
-
下载Docker for windows 用于执行docker-compose.yml文件,远程推送镜像
-
在服务的父工程目录下新建docker-compose.yml文件,并对服务进行线上的配置
# compose版本
version: '3'
# 定义服务
services:
# 服务名称
redis:
# 镜像名称
image: redis
# 容器名称
container_name: redis
# 需要映射的端口,多个往下排列
ports:
- 6379:6379
- xxxx:xxxx
# 需要在容器运行后,内部执行的命令
command: redis-server --requirepass 123456
eureka:
image: eureka
container_name: eureka
# 当容器意外停止时,总是重启
restart: always
# 指定时区
environment:
TZ: Asia/Shanghai
ports:
- '6868:6868'
deploy:
resources:
limits:
# 容器内存上限400M
memory: 400M
# 从属网络
networks:
- back
# 自定义一个网络,使它们在同一网络
networks:
back:
driver: bridge
-
定义完之后,会出现按钮,点击即可(前提配置)启动创建好的镜像
-
使用Docker命令 docker ps 可以查看服务已经运行中