docker,docker componse 部署spring boot简单使用

docker,docker componse 部署spring boot简单使用

author:zj

介绍:

Docker Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器

`Compose` 恰好满足了这样的需求。它允许用户通过一个单独的 `docker-compose.yml` 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 

services

services 字段指定了在 Docker Compose 编排中要运行的服务。每个服务都有一个名称,并指定要使用的镜像和容器的配置选项。例如:

如:

services:
    mysql: #服务名
    image: mysql:5.5 #mysql镜像

build 和 image

build 字段允许在 Docker Compose 编排中指定 Dockerfile 的位

置,从而可以使用 Docker Compose 构建镜像。

image 字段指定要使用的 Docker 镜像。例如:

services:
  mysql: #服务名
    image: mysql:5.5 #mysql镜像
  user: #服务名
    build: ./user #这里为用户微服务文件夹,里面存放的是该服务代码jar包和Dockerfile文件

volumes 和 environment

volumes 字段指定了要使用的数据卷。environment 字段指定了要设置的环境变量。例如:

services:
  mysql: #服务名
    image: mysql:5.5 #mysql镜像
    environment:
      MYSQL_ROOT_PASSWORD: 000000 #设置数据库密码
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql" #数据卷挂载

ports 和 expose

ports 字段指定了要宿主机映射到容器的端口(宿主机端口:容器端口)。expose 字段是用于在 Docker 容器内部暴露端口的选项,可以让其他容器连接到这些端口,但不会将它们映射到 Docker 主机上。expose 与 ports 不同的是,expose 字段仅仅是将容器内部的端口暴露给其他容器使用,而不是直接映射到宿主机上的端口

 services:
    gateway: #服务名
       build: ./gateway #这里为网关文件夹,里面存放的是该服务代码jar包和Dockerfile文件
       ports:
          - 7000:7000
    nginx:
        image: nginx
        expose:
          - 8080

container_name

指定容器名称。默认将会使用 `项目名称_服务名称_序号` 这样的格式。

environment

设置环境变量。你可以使用数组或字典两种格式。

只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据

environment:
  RACK_ENV: development
  SESSION_SECRET:
 
environment:
  - RACK_ENV=development
  - SESSION_SECRET

command

覆盖容器启动后默认执行的命令。

command: echo "hello world"

env_file

从文件中获取环境变量,可以为单独的文件路径或列表。

如果通过 docker-compose -f FILE 方式来指定 Compose 模板文件,则 env_file 中变量的路径会基于模板文件路径。

如果有变量名称与 environment 指令冲突,则按照惯例,以后者为准。

depends_on

解决容器的依赖、启动先后的问题。以下例子中会先启动 `redis` `db` 再启动 `web`

build

指定 `Dockerfile` 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 `Compose` 将会利用它自动构建这个镜像,然后使用这个镜像。

总结

配置简单介绍docker-compose.yml

version: "3.0"  # Docker Compose的版本
services:  # 定义服务
  mysqldb:  # MySQL数据库服务
    image: mysql:5.7.19  # 使用的MySQL镜像版本
    container_name: mysql  # 容器名称
    ports:  # 端口映射
      - "3306:3306"  # 将容器的3306端口映射到宿主机的3306端口
    volumes:  # 数据卷挂载
      - /root/mysql/conf:/etc/mysql/conf.d  # 配置文件目录
      - /root/mysql/logs:/logs  # 日志目录
      - /root/mysql/data:/var/lib/mysql  # 数据目录
    environment:  # 环境变量
      MYSQL_ROOT_PASSWORD: root  # 设置MySQL的root密码为root
    networks:  # 网络配置
      - ems  # 连接到名为ems的网络
    depends_on:  # 依赖服务
      - redis  # 依赖于redis服务
 
  redis:  # Redis服务
    image: redis:4.0.14  # 使用的Redis镜像版本
    container_name: redis  # 容器名称
    ports:  # 端口映射
      - "6379:6379"  # 将容器的6379端口映射到宿主机的6379端口
    networks:  # 网络配置
      - ems  # 连接到名为ems的网络
    volumes:  # 数据卷挂载
      - /root/redis/data:/data  # 数据目录
    command: redis-server  # 启动Redis服务器的命令
 
networks:  # 定义网络
  ems:  # 名为ems的网

启动指定的文件

docker-compose -f docker-compose.yaml up -d  //-f调用文件。-d:开启守护进程

Docker Compose 常用命令

docker --version #查看版本
 
docker-compose -h    # 查看帮助
 
docker-compose up    # 启动所有docker-compose服务
 
docker-compose up -d    # 启动所有docker-compose服务并后台运行

 docker-compose up <serviceName> -d    # 启动所有docker-compose服务并后台运行【如: docker-compose up saas-jmall-server-run-manage -d】
 
docker-compose down     # 停止并删除容器、网络、卷、镜像。
 
docker-compose exec  yml里面的服务id   # 进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
 
docker-compose ps      # 展示当前docker-compose编排过的运行的所有容器
 
docker-compose top       # 展示当前docker-compose编排过的容器进程【停止指定服务如: docker-compose stop saas-jmall-server-run-manage 】
 
docker-compose logs  yml里面的服务id   # 查看容器输出日志
 
docker-compose config     # 检查配置
 
docker-compose config -q  # 检查配置,有问题才有输出
 
docker-compose restart   # 重启服务
 
docker-compose start     # 启动服务
 
docker-compose stop      # 停止服务
 
docker-compose rm [options] [SERVICE...]  #删除所有(停止状态的)服务容器。

docker常用命令

# 查看docker版本
docker version
# 显示docker系统的信息
docker info
# 日志信息
docker logs
# 故障检查
service docker status
# 启动关闭docker
sudo service docker start|stop


docker logs -f <容器名orID>



# 查看容器信息
# 查看当前运行的容器
docker ps
# 查看全部容器
docker ps -a
# 查看全部容器的id和信息
docker ps -a -q
# 查看全部容器占用的空间
docker ps -as
# 查看一个正在运行容器进程,支持 ps 命令参数
docker top
# 查看容器的示例id
sudo docker inspect -f  '{{.Id}}' [id]
# 检查镜像或者容器的参数,默认返回 JSON 格式
docker inspect
# 返回 ubuntu:14.04  镜像的 docker 版本
docker inspect --format '{{.DockerVersion}}' ubuntu:14.04
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ubuntu:14.04

# 容器同步命令
# 保存对容器的修改
docker commit
# 保存某个容器成为一个镜像
docker commit -a "user" -m "commit info" [CONTAINER] [imageName]:[imageTag]
# 推送一个容器到中心仓库
docker login --username=[userName] --password=[pwd] [registryURL]
## 建议登录后查看 docker info
docker tag [imageID] [remoteURL]:[imageTag]
docker push [remoteURL]:[imageTag]
# 拉取提交的容器
docker pull [remoteURL]:[imageTag]
# 对比容器的改动
docker diff
# 附加到一个运行的容器上
docker attach

# 容器操作命令
# 创建删除容器
# 创建一个容器命名为 test 使用镜像daocloud.io/library/ubuntu
docker create -it --name test daocloud.io/library/ubuntu
# 创建并启动一个容器 名为 test 使用镜像daocloud.io/library/ubuntu
docker run --name test daocloud.io/library/ubuntu
# 删除一个容器
docker rm [容器id]
# 删除所有容器
docker rm `docker ps -a -q`
# 根据Dockerfile 构建
docker build -t [image_name] [Dockerfile_path]

# docker容器随系统自启
docker run --restart=always
(no – 默认值,如果容器挂掉不自动重启
on-failure – 当容器以非 0 码退出时重启容器,同时可接受一个可选的最大重启次数参数 (e.g. on-failure:10).
always – 不管退出码是多少都要重启)

# 容器资源限制参数
docker start|stop|restart [id]
# 暂停|恢复 某一容器的所有进程
docker pause|unpause [id]
# 杀死一个或多个指定容器进程
docker kill -s KILL [id]
# 停止全部运行的容器
docker stop `docker ps -q`
# 杀掉全部运行的容器
docker kill -s KILL `docker ps -q`

实战

1,拉取对应镜像


# 拉取最小jdk
docker pull frolvlad/alpine-java:jdk8-slim

# 拉取jre docker 镜像
docker pull frolvlad/alpine-j

2,配置docker-compose.yml

version: "3.0"
services:
  saas-jmall-server-run-manage:
    # 指定容器名称
    container_name: saas-jmall-server-run-manage
    # 所用镜像
    image: frolvlad/alpine-java:jdk8-slim
    # 宿主机目录
    working_dir: /app
    # 启动机制
    restart: always
    network_mode: host
    # 暴露的端口
    expose:
      - 8812
    environment:
      # 指定时区
      - TZ=Asia/Shanghai
    # 数据卷挂载
    volumes:
      # 挂载本地路径
      - /data/app:/app
    entrypoint: nohup java -Xms256m -Xmx512m -jar -Dserver-addr=10.88.88.88:8848  -Dspring.profiles.active=dev -Dgroup=jmall_native_dev -Dnamespaces=4564654b12-cfd1-4b79-b1d2-b230012f3b59  saas-jmall-server-run-manage.jar >/dev/null 2>&1 &

3,启动/ 停止指定service

启动:docker-compose up saas-jmall-server-run-manage -d

停止:docker-compose stop saas-jmall-server-run-manage

进微信交流群可联系V:q1227260341,备注加java群

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值