• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Docker-Compose的简单使用,一键部署java微服务

互联网 diligentman 2周前 (04-06) 15次浏览

之前运行一个镜像,需要添加大量的参数,可以通过Docker-Compose编写这些参数。而且Docker-Compose可以帮助我们批量的管理容器。这些信息只需要通过一个docker-compose.yml文件去维护即可。

Docker Compose 来轻松高效的管理容器,定义运行多个容器

官方介绍

定义、运行多个容器。 YAML file 配置文件。 single command。 命令有哪些? Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features. 所有的环境都可以使用 Compose。 Compose works in all environments: production, staging, development, testing, as well as CI workflows. You can learn more about each case in Common Use Cases. 三步骤: Using Compose is basically a three-step process:

  1. Define your app’s environment with a Dockerfile so it can be reproduced anywhere.
  • Dockerfile 保证我们的项目在任何地方可以运行。
  1. Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.
  • services 什么是服务。
  • docker-compose.yml 这个文件怎么写!
  1. Run docker-compose up and Compose starts and runs your entire app.
  • 启动项目

作用:批量容器编排。

理解

Compose 是Docker官方的开源项目。需要安装! Dockerfile 让程序在任何地方运行。 web服务。 redismysql、nginx … 多个容器。 run Compose

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

docker-compose up 100 个服务。 Compose :重要的概念。 服务services, 容器。应用。(web、redismysql….) 项目project。 一组关联的容器。 博客。web、mysql

下载并安装Docker-Compose

下载Docker-Compose


sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 这个可能快点!
curl -L https://get.daocloud.io/docker/compose/releases/download/1.28.6/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

设置权限


sudo chmod +x /usr/local/bin/docker-compose

测试,在任意目录下输入docker-compose

Docker-Compose的简单使用,一键部署java微服务

官方体验

python 应用。计数器。 redis

官网地址:https://docs.docker.com/compose/gettingstarted/

前提需要安装最新版的docker-compose,否则会报版本不兼容

1、应用 app.py 2、Dockerfile 应用打包为镜像 3、Docker-compose yaml文件 (定义整个服务,需要的环境。 web、redis) 完整的上线服务! 4、启动 compose 项目(docker-compose up)

流程

1、创建网络 2、执行 Docker-compose yaml 3、启动服务。

官网流程

  • 创建文件夹

     mkdir composetest
     cd composetest
    
  • 创建app.py

    import time
    
    import redis
    from flask import Flask
    
    app = Flask(__name__)
    cache = redis.Redis(host='redis', port=6379)
    
    def get_hit_count():
        retries = 5
        while True:
            try:
                return cache.incr('hits')
            except redis.exceptions.ConnectionError as exc:
                if retries == 0:
                    raise exc
                retries -= 1
                time.sleep(0.5)
    
    @app.route('/')
    def hello():
        count = get_hit_count()
        return 'Hello World! I have been seen {} times.n'.format(count)
    
  • 创建 requirements.txt

    flask
    redis
    
  • 创建 Dockerfile

    FROM python:3.7-alpine
    WORKDIR /code
    ENV FLASK_APP=app.py
    ENV FLASK_RUN_HOST=0.0.0.0
    RUN apk add --no-cache gcc musl-dev linux-headers
    COPY requirements.txt requirements.txt
    RUN pip install -r requirements.txt
    EXPOSE 5000
    COPY . .
    CMD ["flask", "run"]
    
  • 创建 docker-compose.yml

    version: "3.9"
    services:
      web:
        build: .
        ports:
          - "5000:5000"
      redis:
        image: "redis:alpine"
    
  • 运行 docker-compose up

    成功截图:

Docker-Compose的简单使用,一键部署java微服务

Java微服务项目实战计数器使用DockerCompose部署

  • 新建项目,完成计数功能

    package com.atxiaodei.hellodockercompose.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @ClassName HelloController
     * @Deacription TODO
     * @Author 王盟
     * @Date 2021/4/6 18:58
     * @Version 1.0
     **/
    @RestController
    public class HelloController {
    
        @Autowired
        StringRedisTemplate redisTemplate;
    
        @RequestMapping("/hello")
        public String helloCount(){
            Long view = redisTemplate.opsForValue().increment("view");
    
            return  "使用dockercompose部署java微服务计数器功能,view"+view;
        }
    }
    
    
  • 编写Dockerfile

    FROM java:8
    
    COPY *.jar /app.jar
    
    CMD ["--server.port=8080"]
    
    EXPOSE 8080
    
    ENTRYPOINT ["java","-jar","/app.jar"]
    
    
  • 编写docker-compose.yml

    version: '3.9'
    
    services:
      wangmengapp:
        build: .
        image: wangmengapp
        depends_on:
          - redis
        ports:
        - "8080:8080"
      redis:
        image: "redis:alpine"
    
  • 上传文件到服务器

  • 执行 docker-compose up

    成功截图

Docker-Compose的简单使用,一键部署java微服务

总结:

  • 未来项目只要有 docker-compose 文件。 按照这个规则,启动编排容器。!
  • 公司: docker-compose。 直接启动。
  • 网上开源项目: docker-compose 一键搞定。
  • 假设项目要重新部署打包 docker-compose up –build # 重新构建!

展开阅读全文

ymlredisyamlmysqldockerjavadocker compose

© 著作权归作者所有

举报

打赏

0


0 收藏

微信
QQ
微博

分享

作者的其它热门文章

SpringBoot整合Redis,2021最新版
树莓派 raspi-config 设置详解
树莓派搭建java web服务器(一)—树莓派入门系统安装
树莓派 安装mysql


程序员灯塔
转载请注明原文链接:Docker-Compose的简单使用,一键部署java微服务
喜欢 (0)