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 .
4:检查构建成功的镜像,镜像名为datamigration
docker images
三:启动SpringBoot容器并且连接到PostgreSQL服务。
1:运行容器并且与postgresql容器进行容器连接
docker run -d --name datamigration-service -p 8080:8080 --link postgres:postgres datamigration
- --name datamigration-service:给该容器起个名字
- -p 8080:8080:端口映射(同上文)
- --link postgres:postgres postgres(容器名):postgres(别名,应与项目代码中上文提到的配置文件中的url修改的名字一样
- datamigration :运行的镜像名
2:检查是否启动成功
docker ps
四:打开项目http://192.168.5.55:8080,验证成功。