Docker部署Springboot项目连接到PostgreSQL

docker小白的学习笔记,将自己之前做的Springboot项目做成容器进行试验,新建的PG数据库并没有导入数据,但是此过程可用。

一:部署 postgresql镜像。

1:搜索postgresql镜像。

docker search postgres;

2:拉取postgres镜像

docker pull postgres

3:创建本地目录映射到容器内postgresql的 /var/lib/postgresql/data 的目录(方便同步修改管理相关配置文件及数据)

mkdir -p /opt/postgres/data

4:创建PostgreSQL容器,检查postgresql容器是否启动成功

docker run --name postgres -v /opt/postgres/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres
  • --name postgres :给容器命名
  • -v /opt/postgres/data:/var/lib/postgresql/data:将本地/opt/postgres/data目录挂载到容器内/var/lib/postgresql/data目录
  • -e POSTGRES_PASSWORD=postgres:设置数据库密码
  • -p 5432:5432 :将容器5432端口(冒号后)映射到主机的5432端口(冒号前)
  • -d:以一个进程方式运行容器
  • postgres:运行的镜像名。
docker ps  :显示正在运行的容器信息

5:配置远程连接

(1)直接修改 /opt/postgres/data目录下的pg_hba.conf(该目录挂载到容器内/var/lib/postgresql/data目录,所以文件内容相同,操作同步)

vi /opt/postgres/data/pg_hba.conf

添加下面这一行,表示允许所有主机使用所有合法的数据库用户名访问数据库,并提供加密的密码验证。

host    all             all             0.0.0.0/24              md5

 

(2):修改postgresql.conf文件,将数据库服务器的监听模式修改为监听所有主机发出的连接请求。

vi /opt/postgres/data/postgresql.conf

 

(3):用navicat连接,检查远程配置是否成功

二:构建SpringBoot服务镜像。

1:修改项目中配置文件连接的数据库的URL地址名字(和下面容器连接--link后的名字相同),并且编译打包成jar包(maven功能)。

2:创建Dockerfile文件,并将项目打包的jar包放在Dockerfile相同目录下。

vi Dockerfile


# 该镜像使用Java
FROM java:8 

# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 

# 将自己的jar(data-migration-0.0.1-SNAPSHOT.jar)包添加到容器中并更名为app.jar
ADD data-migration-0.0.1-SNAPSHOT.jar app.jar 

# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

# 指定容器需要映射到主机的端口
EXPOSE 8080

项目jar包和Dockerfile放在同一目录。

3:构建项目镜像,第一次比较慢。

docker image build -t datamigration .
  1. -t  datamigration     是给要构建的SpringBoot取一个镜像名字。
  2.  .       最后有个点,代表当前目录,会在当前目录寻找Dockerfile文件进行编译

4:检查构建成功的镜像,镜像名为datamigration

docker images

 

三:启动SpringBoot容器并且连接到PostgreSQL服务。

1:运行容器并且与postgresql容器进行容器连接

docker run -d --name datamigration-service -p 8080:8080 --link postgres:postgres datamigration

  1. --name datamigration-service给该容器起个名字
  2. -p 8080:8080:端口映射(同上文)
  3. --link postgres:postgres   postgres(容器名):postgres(别名,应与项目代码中上文提到的配置文件中的url修改的名字一样
  4. datamigration  运行的镜像名

2:检查是否启动成功

docker ps

四:打开项目http://192.168.5.55:8080,验证成功。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值