Docker compose部署SpringBoot项目连接MySQL及遇到的坑

前面使用docker简单部署了下SpringBoot项目并介绍了什么是Dockerfile,如果是镜像比较多的情况下如何一键交付呢?Docker-compose!,理解了Docker-compose后面学习K8s就会好理解一些

一、安装docker-compose

环境Centos7

//下载docker-compose
curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

//为文件增加可执行权限,要不然root用户也没有权限
chmod +x /usr/local/bin/docker-compose

//查看是否安装成功
[root@SJS local]# docker-compose --version
docker-compose version 1.27.3, build 4092ae5d

常用命令

#构建、创建、启动相关容器
docker-compose up -d

#停止所有相关容器
docker-compose stop

#列出所有容器信息
docker-compose ps

二、部署的步骤

  1. 1.使用Dockerfile定义应用程序环境,一般需要修改初始镜像行为时才需要使用
  2. 2.使用docker-compose.yml定义要部署的应用程序服务,以便执行脚本一次性部署
  3. 3.使用docker-compose up命令将所有应用服务一次性部署起来

三、部署SpringBoot项目

项目整体

1.编写Dockerfile

FROM java:8
# 在docker容器中自建容器卷,用于数据保存和持久化工作
VOLUME /tmp
#用于复制文件并解压缩(COPY不能解压缩)
#将当前的redpacket-backend-1.0.0-SNAPSHOT.jar复制到docker容器根目录下
ADD redpacket-backend-1.0.0-SNAPSHOT.jar app.jar
#运行过程中创建一个app.jar文件
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
#执行传入的参数的linux命令,启动jar包
#不同CMD的是:多个CMD命令只能是最后一个生效,CMD会被docker run之后的参数替换
#ENTRYPOINT 执行的命令会追加不会覆盖
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

2.编写docker-compose.yml文件

该文件主要分为三个组成部分

工程:整个yml文件就是一个工程
服务:services节点下即为服务
容器:服务下为容器

version: '3.8'
services:
  #mysql服务名字
  mysql:
    #使用的镜像
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'redpacket'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: '123456'
    #需要挂载的文件卷
    volumes:
      - /mydata/mysql/data:/var/lib/mysql
      - /mydata/mysql/log:/var/log/mysql
      - /mydata/mysql/conf:/etc/mysql
    restart: always
    networks:
      - test_network
  #SpringBoot项目服务
  redpacket:
    container_name: redpacket
    #构建指定目录下的Dockerfile
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - mysql
    ports:
      - "8090:8090"
    restart: always
    networks:
      - test_network
networks:
  test_network:

3.注意修改yml文件链接名字

4.一键启动项目

将项目的dockerfile、docker-compose.yml、jar包放到同一目录下,使用docker-compose启动即可

就成功了

四、踩的坑

如果在使用的过程中修改了Dockerfile,一定要把之前的镜像删掉!,要不然即使运行docker-compose up命令能成功,也不会重新构建之前的镜像只是重新创建一个容器。

参考文章:

https://mp.weixin.qq.com/s/iMl9bJ4SxUsNHBbiS5VUcw

https://docs.docker.com/compose/env-file/

https://blog.csdn.net/u011943534/article/details/81392993

到此这篇关于Docker compose部署SpringBoot项目连接MySQL的文章就介绍到这了,更多相关Docker compose部署SpringBoot项目内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • docker-compose镜像发布springboot项目的流程分析

    简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project).Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理.因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理. Docker-Compose将所管理的

  • 使用dockercompose搭建springboot-mysql-nginx应用

    上篇使用docker构建spring-boot应用,是把编译好的jar包构建到镜像中. 这篇是把spring-boot连同数据库,做为一组docker服务运行起来. 这里只是把自己操作记录下来,完整运行的代码见"参考"中的引用1中的内容. (我修改mysql映射目录及获取远程ip的方法) 主要步骤: 搭建简单的springboot应用 应用添加docker下支持 编写dockercompose配置文件 实践运行 搭建简单的springboot应用 做一个web应用,统计访问该站点的ip

  • Docker compose部署SpringBoot项目连接MySQL及遇到的坑

    前面使用docker简单部署了下SpringBoot项目并介绍了什么是Dockerfile,如果是镜像比较多的情况下如何一键交付呢?Docker-compose!,理解了Docker-compose后面学习K8s就会好理解一些 一.安装docker-compose 环境Centos7 //下载docker-compose curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-

  • docker Compose部署springboot+vue前端端分离

    目录 (一) 准备工作 一.安装 二.修改生产环境下的配置以及打包操作: (二) 开始部署 一.blog_api 制作镜像 二.dockerCompose编排 三.mysql.redis.nginx的配置: 四.导入数据[数据库表的数据.前端静态web资源] 五.测试并排除错误: 温馨提示:如果有自己的服务器最好不过了,这样部署网项目就可以上线了.没有的话,只能使用localhost 本机访问啦,记得替换 ngixn 中的ip地址.域名为localhost. (一) 准备工作 一.安装 1.安装

  • IDEA通过Docker插件部署SpringBoot项目的过程详解

    1.配置Docker远程连接端口 找到并编辑服务器上的docker.service文件. vi /usr/lib/systemd/system/docker.service 如下图所示的地方,添加: -H tcp://0.0.0.0:2375 2.重启Docker systemctl daemon-reload service docker restart 3.服务器开放端口 我用的阿里云服务器,在安全组的配置规则,开放端口. 4.测试远程连接是否正常 curl http://localhost

  • Docker快速部署SpringBoot项目介绍

    1.安装 Docker 首先打开linux环境,输入以下命令进行安装: 安装 yum install docker 检查是否安装成功 docker --version #启动 systemctl start docker 如果下载很慢,可以切换到国内的阿里云镜像,进行下载: 换镜像源 sudo vim /etc/docker/daemon.json 内容如下: { "registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.c

  • Gitlab-runner+Docker实现自动部署SpringBoot项目

    目录 1.环境要求 当前我的服务版本 2.主要流程 3.GitlabRunner 安装和注册 3.1 安装 总结一共就2个步骤: 1.添加gitlab官方库: 2.命令安装: 3.2 开始注册 4.制作脚本! 重要!!! 3个文件位置图 .gitlab-ci.yml 5.测试 6.常见问题 本文基于Gitlab CI/CD及Docker快速实现项目的自动部署. 注意:本文较长,浏览需要12分钟左右. 1.环境要求 以下服务器的操作系统均为Centos7 服务器A:Gitlab 服务器B:Gitl

  • Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数示例代码

    最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4.项目准备 5.编写 Dockerfile 6.发布项目 7.测试服务 环境准备 系统:Ubuntu 17.04 x64 Docker 17.12.0-ce IP:45.32.31.101 一.安装 Docker CE 国内不建议使用:"脚本进行安装",会下载安装很慢,使用步骤 1 安装,看下面的链接:常规安装方式 1.常规安装方式 Ubuntu 17.04 x64 安装

  • Mac下部署springBoot项目到Docker中(demo)

    SpringCloud + Docker 的便利和强大真的超乎想象,我已经入坑了-好了,不说废话,记录一个简单的 Demo 供其他同学排坑. 前言 惯例不能丢,先上源代码:docker-demo 这个项目的代码是我执行在Docker上部署SpringBoot的java代码和Dockerfile配置文件,相关的执行命令语句也记录在上. 操作流程 本地部署 在 Mac 上安装启动 Docker.详细步骤请参考:MacOS安装Docker clone 项目:docker-demo,然后依次执行: do

  • Docker部署springboot项目到腾讯云的实现步骤

    目录 服务器的配置 安装MySql 将springboot项目打成jar包 编写Dockfile文件 访问 删除重做(更新)镜像 服务器的配置 服务器配置总结为三个,防火墙,端口,和安全组 1.防火墙 查看防火墙状态 firewall-cmd --state 没有开启则开启防火墙 systemctl start firewalld.service 2.端口 添加对外开放的端口 firewall-cmd --zone=public --add-port=端口号/tcp --permanent fi

  • Centos8.3、docker部署springboot项目实战案例分析

    引言 目前k8s很是火热,我也特意买了本书去学习了一下,但是k8s动辄都是成百上千的服务器运维,对只有几台服务器的应用来说使用k8s就有点像大炮打蚊子.只有几台服务器的应用运维使用传统的tomcat部署很繁琐,效率不高,动辄十几分钟部署一台服务,使用jenkins部署又太过复杂,斟酌许久我还是选择了使用docker+dockerFile的方式部署.这种方式部署简单高效. docker安装 curl -fsSL https://get.docker.com | bash -s docker --m

  • IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署

    之前博客已经谈到配置docker远程链接服务,这里再介绍如何在IDEA中配置docker,将项目部署到服务器上 前文 Docker之开启远程访问的实现 idea2021激活教程 https://www.yuque.com/docs/share/b996d27e-c888-45f2-bb1e-f6db5efe2485?# https://www.jb51.net/article/178193.htm 去插件中心安装Docker插件,安装完重启IDEA.这个简单 配置连接远程docker,打开Doc

随机推荐