在Docker中部署SpringBoot项目,关联MySql容器
相关
IntelliJ IDEA
Xshell
Ubuntu18
项目名:testdb
步骤
Docker安装就不说了,直接开始
1. SpringBoot项目打包
(1) 配置application.yml
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://dockermysql:3306/testdb?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
server:
port: 8082
注:此处dockermysql 是mysql容器别名,后面有说明
(2) 打包项目,上传至服务器
用IDEA或者maven命令打包,把jar包放到服务器自己目录下
上传到服务器
root@VM-0-10-ubuntu:/home/ubuntu/jar# ll
total 27412
drwxrwxr-x 2 ubuntu ubuntu 4096 Aug 15 22:46 ./
drwx------ 8 ubuntu ubuntu 4096 Aug 16 16:04 ../
-rw-rw-r-- 1 ubuntu ubuntu 824 Aug 15 22:46 Dockerfile
-rw-rw-r-- 1 ubuntu ubuntu 28055515 Aug 15 22:39 testdb-0.0.1-SNAPSHOT.jar
2. 编写Dockerfile文件
#指定基础镜像
FROM java:8
#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8082
#维护者信息
MAINTAINER xiezhiwei <test@qq.com>
#这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层
VOLUME /tmp
#表示把jar包复制到镜像服务里面的根目录,并改名testdb.jar
ADD testdb-0.0.1-SNAPSHOT.jar /testdb.jar
#RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
RUN bash -c "touch /testdb.jar"
#指定容器启动程序及参数 <ENTRYPOINT> "<CMD>"
ENTRYPOINT ["java","-jar","testdb.jar"]
dockerfile文件要与jar包在同一目录
2. 执行docker命令
(1)使用当前目录的 Dockerfile 创建镜像,标签为 testdb
docker build -t testdb .
(2)创建一个新的容器并运行命令
docker run -p 8082:8082 --name testdb --link mysql:dockermysql -d testdb
- -p 设置容器端口号
外部访问服务器端口:项目启动端口
- –name 设置容器名
容器名
- –link 关联容器
被关联的容器名:被关联容器别名