前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Docker Compose部署SpringBoot应用

使用Docker Compose部署SpringBoot应用

作者头像
macrozheng
发布2019-07-22 14:43:20
1K0
发布2019-07-22 14:43:20
举报
文章被收录于专栏:mall学习教程mall学习教程

Docker Compose是一个用于定义和运行多个docker容器应用的工具。使用Compose你可以用YAML文件来配置你的应用服务,然后使用一个命令,你就可以部署你配置的所有服务了。

安装

下载Docker Compose:

代码语言:javascript
复制
curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

修改该文件的权限为可执行:

代码语言:javascript
复制
chmod +x /usr/local/bin/docker-compose

查看是否已经安装成功:

代码语言:javascript
复制
docker-compose --version

使用Docker Compose的步骤

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

docker-compose.yml常用命令

image

指定运行的镜像名称

代码语言:javascript
复制
# 运行的是mysql5.7的镜像
image: mysql:5.7

container_name

配置容器名称

代码语言:javascript
复制
# 容器名称为mysql
container_name: mysql

ports

指定宿主机和容器的端口映射(HOST:CONTAINER)

代码语言:javascript
复制
# 将宿主机的3306端口映射到容器的3306端口
ports:
  - 3306:3306

volumes

将宿主机的文件或目录挂载到容器中(HOST:CONTAINER)

代码语言:javascript
复制
# 将外部文件挂载到myql容器中
volumes:
  - /mydata/mysql/log:/var/log/mysql
  - /mydata/mysql/data:/var/lib/mysql
  - /mydata/mysql/conf:/etc/mysql

environment

配置环境变量

代码语言:javascript
复制
# 设置mysqlroot帐号密码的环境变量
environment:
  - MYSQL_ROOT_PASSWORD=root

links

连接其他容器的服务(SERVICE:ALIAS)

代码语言:javascript
复制
# 可以以database为域名访问服务名称为db的容器
links:
  - db:database

Docker Compose常用命令

构建、创建、启动相关容器:

代码语言:javascript
复制
# -d表示在后台运行
docker-compose up -d

停止所有相关容器:

代码语言:javascript
复制
docker-compose stop

列出所有容器信息:

代码语言:javascript
复制
docker-compose ps

使用Docker Compose 部署应用

编写docker-compose.yml文件

Docker Compose将所管理的容器分为三层,工程、服务及容器。docker-compose.yml中定义所有服务组成了一个工程,services节点下即为服务,服务之下为容器。容器与容器直之间可以以服务名称为域名进行访问,比如在mall-tiny-docker-compose服务中可以通过jdbc:mysql://db:3306这个地址来访问db这个mysql服务。

代码语言:javascript
复制
version: '3'
services:
  # 指定服务名称
  db:
    # 指定服务使用的镜像
    image: mysql:5.7
    # 指定容器名称
    container_name: mysql
    # 指定服务运行的端口
    ports:
      - 3306:3306
    # 指定容器中需要挂载的文件
    volumes:
      - /mydata/mysql/log:/var/log/mysql
      - /mydata/mysql/data:/var/lib/mysql
      - /mydata/mysql/conf:/etc/mysql
    # 指定容器的环境变量
    environment:
      - MYSQL_ROOT_PASSWORD=root
  # 指定服务名称
  mall-tiny-docker-compose:
    # 指定服务使用的镜像
    image: mall-tiny/mall-tiny-docker-compose:0.0.1-SNAPSHOT
    # 指定容器名称
    container_name: mall-tiny-docker-compose
    # 指定服务运行的端口
    ports:
      - 8080:8080
    # 指定容器中需要挂载的文件
    volumes:
      - /etc/localtime:/etc/localtime
      - /mydata/app/mall-tiny-docker-compose/logs:/var/logs

注意:如果遇到mall-tiny-docker-compose服务无法连接到mysql,需要在mysql中建立mall数据库,同时导入mall.sql脚本。具体参考使用Dockerfile为SpringBoot应用构建Docker镜像中的运行mysql服务并设置部分。

使用maven插件构建mall-tiny-docker-compose镜像

注意:构建有问题的可以参考使用Maven插件构建Docker镜像

运行Docker Compose命令启动所有服务

先将docker-compose.yml上传至Linux服务器,再在当前目录下运行如下命令:

代码语言:javascript
复制
docker-compose up -d

访问接口文档地址http://192.168.3.101:8080/swagger-ui.html:

项目源码地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-docker-compose

推荐阅读

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 macrozheng 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
    • 下载Docker Compose:
      • 修改该文件的权限为可执行:
        • 查看是否已经安装成功:
        • 使用Docker Compose的步骤
        • docker-compose.yml常用命令
          • image
            • container_name
              • ports
                • volumes
                  • environment
                    • links
                    • Docker Compose常用命令
                      • 构建、创建、启动相关容器:
                        • 停止所有相关容器:
                          • 列出所有容器信息:
                          • 使用Docker Compose 部署应用
                            • 编写docker-compose.yml文件
                              • 使用maven插件构建mall-tiny-docker-compose镜像
                                • 运行Docker Compose命令启动所有服务
                                • 项目源码地址
                                • 推荐阅读
                                相关产品与服务
                                容器服务
                                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档