Docker-compose简单实战

服务准备

创建docker-compose本次实战的目录,这里就以我实战的目录来讲解:***/data/docker/compose/web***

应用服务

  1. 创建服务目录:mkdir web-app
  2. 上传准备的jar包和相关配置到当前目录,如:docker-web.jar,我的这个jar包是一个spring-boot的简单项目,只有一个请求接口并返回统计表的数据量(这里会有几个容易忽略的坑,在后面错误记录会展示)
  3. 当前目录准备Dockerfile:vim Dockerfile
FROM openjdk:8u302-jre
LABEL version="1.0.0"
MAINTAINER xxxx
WORKDIR /usr/local/web
ADD docker-web.jar .
EXPOSE 8080
CMD ["java", "-jar", "docker-web.jar"]

数据库服务

  1. 创建服务目录(回到web目录):mkdir web-db
  2. 准备数据库出初始化sql:建库/建表/表数据(*.sql)
  3. 当前目录准备Dockerfile:vim Dockerfile
FROM mysql:5.7
LABEL version="1.0.0"
MAINTAINER xxx
WORKDIR /docker-entrypoint-initdb.d
ADD component.sql .
ENV MYSQL_USER=xxx
ENV MYSQL_PASSWORD=xxx
EXPOSE 3306 33060
CMD ["mysqld"]

docker-compose.yml配置

回到web目录,***编辑docker-compose.yml(文件名称固定)***:vim docker-compose.yml

version: '3.3'
#一下是容器编排工具所涉及到的服务,被依赖的服务位置在前面
services:
 #容器名称,可以用作容器间通信的服务名称
 db: 
  #使用web目录下,web-db文件夹中的Dockerfile构建镜像
  build: ./web-db/
  restart: always
  environment:
   #设置mysql的root账号密码,类似于mysql容器启动时的-e命令
   MYSQL_ROOT_PASSWORD: root
app:
 build: ./web-app/
 #表示当前应用需要依赖db服务
 depends_on:
  - db
 #当前服务所在主机的端口和服务端口的映射关系,类似于服务启动时的-p命令
 ports:
  - "8080:8080"
 restart: always

docker-compose相关命令

服务和配置都已经准备完全了,开始准备使用docker-compose工具对容器进行编排工作,首先介绍下一下几个命令:

  1. docker-compose up #开始编排/构建镜像,并启动对应的服务
  2. docker-compose down #服务下线
    注意:docker-compose的命令,只能在对应的docker-compose.yml文件的目录执行,这样才能准确的进行编排/启动/下线等工作

服务请求

服务启动之后,肯定要进行验证,查看两个应用是否能通行,请求web服务的url查看是否返回预期结果,在这里我遇到几个问题,这里分享下,希望看到的朋友不会在犯这个错。

错误记录

  1. 找不到主机:这里需要将mysql连接url中的主机名称改为docker-compose.yml中的服务名称,如: jdbc:mysql://db:3306/dbname

  2. Caused by: java.net.ssl.SSLHandshakeException: No appropriate protocol(protocol is disabled or cipher suites are inappropriate): 这个问题是由于mysql的url中没有加上useSSL=false,加上后问题得到解决

还有一个问题,我们在web-db的Dockerfile文件中,配置来非root账号的用户名和密码,这时候如果我们在web-app中使用的是非root账号的用户名和密码的话,会导致查询出问题,具体原因就是:新建的普通用户没有相应的库和表的权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值