docker部署springboot连接mysql容器

6 篇文章 0 订阅
2 篇文章 0 订阅

踩坑。。

注意:文件的路径问题,路径不对会导致构建失败,或者启动不了容器

注意:发布的代码连接字符串中引用通配符获取 javas 下的environment的属性获取值

构建mysql

首先编写mysql的Dockerfile文件
文件在docker/mysql/目录下

#docker容器中有的话就不用拉取
FROM MYSQL:5.7 
#定义工作路径变量
ENV WORK_PATH /usr/local/
#定义自启动的目录变量
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

ENV FILE1 sakila-schema.sql
ENV FILE2 sakila-data.sql

ENV AUTO_INSTALL docker-entrypoint.sh

#将要导入的数据文件放入工作路径内
COPY $FILE1 $WORK_PATH
COPY $FILE2 $WORK_PATH

#将执行的脚本放入自启动目录
COPY $AUTO_INSTALL $AUTO_RUN_DIR

#为脚本授权
RUN chmod a+x /$AUTO_RUN_DIR/$AUTO_INSTALL

编写docker-entrypoint.sh 脚本

#!bash/bin

echo '开始执行sql'
mysql -uroot -p12345 <<EOF

source WORK_PATH/FILE1;

source WORK_PATH/FILE2;

EOF

echo '结束执行sql'

构建java

docker/java 创建Dockerfile

FROM  registry.saas.hand-china.com/tools/javabase:0.5.0

#工作区
WORKDIR /

#定义环境变量
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
ENV LC_ALL C.UTF-8

#将jar包放入容器的工作目录`/`下,并改名为test.jar
COPY javatest.jar /test.jar

#当容器启动时,执行
CMD ["java","-jar","test.jar"]

构建镜像,只需执行build.sh

#!bash/bin

bulid -t mysql:test ./docker/mysql

bulid -t java:test ./docker/java

使用docker-compose

编写docker-compose.yml

version: '3'
service:
    mysqls:
      restart: always
      images: mysql:test
      container_name:mysqltest
      ports:
        - "3306:3306"
      commmand:
          [
                 '--character-set-server=utf8mb4',
                 '--collation-server=utf8mb4_unicode_ci'
          ]

       environment:
            MYSQL_ROOT_PASSWORD: 12345
    
    javas:
       images: java:test
       container_name: javatest 
       depends_on:
          - mysqls
       environment:
            IP: mysqls
            PORT: 3306
            USERNAME: root
            PASSWORD: 12345

注意:发布的代码连接字符串中引用通配符获取 javas 下的environment的属性获取值

spring:
   datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://${IP}:${PORT}/sakila?serverTimezone=UTC&&useSSL=false
        username: ${USERNAME}
        password: ${PASSWORD}

编写start.sh脚本

docker-compose up -d

注意:start.sh 应该和docker-compose.yml文件在同一个目录

目录结构

----start.sh
----docker-compose.yml
----build.sh
----docker
-----mysql
------Dockerfile
--------entrypoint.sh
--------sakila-schema.sql
--------sakila-data.sql
-----java
--------Dockefile
--------javatest.jar
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值