返回顶部
首页 > 资讯 > 后端开发 > JAVA >Docker Compose
  • 816
分享到

Docker Compose

docker容器javaPoweredby金山文档 2023-09-21 08:09:26 816人浏览 泡泡鱼
摘要

为什么需要使用Docker Compose Docker Compose 容器编排技术 1、现在我们有一个SpringBoot项目,需要依赖Redis、Mysql、Nginx。 如果使用docker原生部署的话,则需要安装Redi

为什么需要使用Docker Compose

Docker Compose 容器编排技术

1、现在我们有一个SpringBoot项目,需要依赖RedisMysqlNginx

如果使用docker原生部署的话,则需要安装Redis、mysql、nginx容器,才可以启动我们springboot项目,这样的话部署项目的流程非常复杂,所以需要引入我们的

Docker compose实现容器编排技术。

基本的概念

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。

Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

Compose 中有两个重要的概念:

服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理,通过子命令对项目中的一组容器进行便捷地生命周期管理。

Compose 项目由 python 编写,实现上调用了 Docker 服务提供的 api 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

Docker-Compose 的配置文件

Docker-Compose 的工程配置文件默认为 docker-compose.yml,可通过环境变量COMPOSE_FILE 或 -f 参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器

Docker-Compose 配置常用字段

文档地址:https://docs.docker.com/compose/compose-file/compose-file-v3/

  • build 指定 Dockerfile 文件名,要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定

  • dockerfile 构建镜像上下文路径

  • context 可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址

  • image 指定镜像

  • command 执行命令,覆盖默认命令

  • container name 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法 scale

  • deploy 指定部署和运行服务相关配置,只能在 Swarm 模式使用

  • environment 添加环境变量

  • ports 暴露容器端口,与 -p 相同,但端口不能低于 60

  • volumes 挂载宿主机路径或命令卷

  • hostname 容器主机名

  • restart 重启策略,默认 no,always,no-failure,unless-stoped

1.no,默认策略,在容器退出时不重启容器

2.on-failure,在容器非正常退出时(退出状态非0),才会重启容器

3.on-failure:3,在容器非正常退出时重启容器,最多重启3次

4.always,在容器退出时总是重启容器

5.unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器

安装docker-compose

GitHub上下载

官网文档:https://docs.docker.com/compose/install/Https://github.com/docker/compose/releases下载版本:docker-compose-linux-x86_64放到目录:/usr/local/bin/ 修改文件名:docker-compose

这里已经上传到CSDN一份了

https://download.csdn.net/download/zhou9898/87490141

添加可执行权限

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

docker-compose常用命令

docker-compose -h                           # 查看帮助 docker-compose up                           # 创建并运行所有容器docker-compose up -d                        # 创建并后台运行所有容器docker-compose -f docker-compose.yml up -d  # 指定模板docker-compose down                         # 停止并删除容器、网络、卷、镜像。 docker-compose logs       # 查看容器输出日志docker-compose pull       # 拉取依赖镜像dokcer-compose config     # 检查配置dokcer-compose config -q  # 检查配置,有问题才有输出 docker-compose restart   # 重启服务docker-compose start     # 启动服务docker-compose stop      # 停止服务 docker-compose ps  列出项目中所有的容器docker-compose logs  查看容器中日志信息

1. 需要定义一个docker-compose.yml文件----工程

2. 需要在docker-compose文件配置依赖服务

3. docker-compose up 执行该文件

1. 创建一个docker-compose.yml;

2. 定制docker-compose 内容;

3. 运行 docker-compose up ;

docker-compose 部署项目

创建docker-compose.yml

version: '3.3'services:  mp:    build: .    image: mp # Dockerfile构建的镜像    ports:      - "8080:8080"

启动

docker-compose up -d # 创建并后台运行所有容器

docker-compose配合Dockerfile使用

Dockerfile文件

FROM openjdk:11MAINTAINER zqd   # 作者ADD boot02-1.0-SNAPSHOT.jar /boot02.jarENTRYPOINT ["nohup","java","-jar","/boot02.jar","&"]EXPOSE 8080
version: '3.3'services:  boot02:    build:         context: /home/        dockerfile: Dockerfile    container_name: boot02    ports:      - "8080:8080"

docker-compose 安装redis

一、 docker 拉去最新版本的redis

docker pull redis:6.0.6 #后面可以带上tag号, 默认拉取最新版本

二、 docker安装redis

执行命令:

mkdir -p /data/redis/confcd /data/redis/conf

新增配置文件

vim /data/redis/conf/redis.conf

内容只有如下这些:

#开启保护protected-mode yes#开启远程连接 #bind 127.0.0.1 #自定义密码requirepass 12345678 port 6379timeout 0# 900s内至少一次写操作则执行bgsave进行RDB持久化save 900 1 save 300 10save 60 10000rdbcompression yesdbfilename dump.rdbdir /dataappendonly yesappendfsync everysec

保存退出

参数说明

1.修改保护模式protected-mode yes 默认为yes 可以跳过这一步

Redis protected-mode属性解读

设置外部网络连接redis服务,设置说明如下:

a.关闭protected-mode模式,此时外部网络可以直接访问

b.开启protected-mode保护模式,需配置bind ip 和设置访问密码 redis3.2版本后新增protected-mode配置,默认是yes,即开启。

2.把bind 127.0.0.1 注释掉 #bind 127.0.0.1, 这样所有的ip都可以访问了

3.设置密码(根据自己的需要)

4.appendonly yes #开启AOF模式

三、编写 docker-compose.yaml文件

cd /data/redisvim docker-compose.yml

写入下面的内容

version: '3.8'services:  myredis:    container_name: myredis    image: redis:6.0.6    restart: always    ports:      - 6379:6379    privileged: true    command: redis-server /etc/redis/redis.conf --appendonly yes    volumes:      - /data/redis/data:/data      - /data/redis/conf/redis.conf:/etc/redis/redis.conf    networks:      - myWEBnetworks:  myweb:    driver: bridge

说明:

/etc/redis/redis.conf为容器里的目录

启动前的目录结构

yum -y install tree
[root@localhost redis]# pwd/usr/local/docker/redis[root@localhost redis]# tree.├── conf│   └── redis.conf├── data│   └── appendonly.aof└── docker-compose.yml2 directories, 3 files

四、启动容器

docker-compose up -d

到这里就ok了,

启动后的目录结构

[root@localhost redis]# tree.├── conf│   └── redis.conf├── data│   └── appendonly.aof└── docker-compose.yml2 directories, 3 files

docker-compose 安装mysql

mkdir -p /data/mysqlcd /data/mysql

新建一个文件

vim docker-compose.yml
version: '3'services:  mysql:    image: mysql    restart: always    container_name: mysql    environment:      MYSQL_ROOT_PASSWord: 123456    command:      --default-authentication-plugin=mysql_native_password      --character-set-server=utf8mb4      --collation-server=utf8mb4_general_ci      --explicit_defaults_for_timestamp=true      --lower_case_table_names=1      --max_allowed_packet=128M;    ports:      - 3306:3306    volumes:      - /data/mysql/data:/var/lib/mysql      - /etc/localtime:/etc/localtime:ro

默认数据库是账号是root

密码自己修改 MYSQL_ROOT_PASSWORD

保存

启动运行

docker-compose up -d

docker-compose 安装nginx

创建目录

根据自己的需要存放位置

mkdir -p /data/nginxmkdir -p /data/nginx/conf.dmkdir -p /data/nginx/logmkdir -p /data/nginx/conf

docker-compose.yml

vim /data/nginx/docker-compose.yml

version: '3'services:  nginx:    restart: always    image: nginx    ports:      - 80:80      - 443:443    volumes:      - /data/nginx/conf.d:/etc/nginx/conf.d      - /data/nginx/log:/var/log/nginx      - /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf      - /data/nginx/html:/usr/share/nginx/html      - /etc/letsencrypt:/etc/letsencrypt

为应用存放位置(该目录下要有 index.html)

mkdir -p /data/nginx/htmlvim /data/nginx/html/index.html

nginx相关配置

vim /data/nginx/conf.d/my.conf

server {     listen 80;   server_name localhost;    location / {        root   /usr/share/nginx/html;        index index.html index.htm;     }}

vim /data/nginx/conf/nginx.conf

user  root;worker_processes  1;error_log  /var/log/nginx/error.log warn;pid        /var/run/nginx.pid;events {    worker_connections  1024;}http {    include       /etc/nginx/mime.types;    default_type  application/octet-stream;    log_fORMat  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';    access_log  /var/log/nginx/access.log  main;    sendfile        on;    #tcp_nopush     on;    keepalive_timeout  65;    #gzip  on;    include /etc/nginx/conf.d/*.conf;}

启动

cd /data/nginxdocker-compose up -d

访问

主页可能是Centos欢迎页,需要替换,或者访问具体index.html

docker-compose批量部署

1、在docker-compose中构建Dockerfile

cd /data
build:     context: /home/df02 # 指定dockerfile目录    dockerfile: Dockerfile # 指定dockerfile文件名

vim docker-compose.yml

version: '3'services:  boot02:    build:         context: /home/df02        dockerfile: Dockerfile    container_name: boot02    ports:      - "8080:8080"  myredis:    container_name: myredis    image: redis:6.0.6    restart: always    ports:      - 6379:6379    privileged: true    command: redis-server /etc/redis/redis.conf --appendonly yes    volumes:      - /data/redis/data:/data      - /data/redis/conf/redis.conf:/etc/redis/redis.conf    networks:      - myweb  mysql:    image: mysql    restart: always    container_name: mysql    environment:      MYSQL_ROOT_PASSWORD: 123456    command:      --default-authentication-plugin=mysql_native_password      --character-set-server=utf8mb4      --collation-server=utf8mb4_general_ci      --explicit_defaults_for_timestamp=true      --lower_case_table_names=1      --max_allowed_packet=128M;    ports:      - 3306:3306    volumes:      - /data/mysql/data:/var/lib/mysql      - /etc/localtime:/etc/localtime:ro  nginx:    container_name: nginx    restart: always    image: nginx    ports:      - 80:80      - 443:443    volumes:      - /data/nginx/conf.d:/etc/nginx/conf.d      - /data/nginx/log:/var/log/nginx      - /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf      - /data/nginx/html:/usr/share/nginx/html      - /etc/letsencrypt:/etc/letsencryptnetworks:  myweb:    driver: bridge

来源地址:https://blog.csdn.net/zhou9898/article/details/129190341

--结束END--

本文标题: Docker Compose

本文链接: https://lsjlt.com/news/413706.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Docker Compose
    为什么需要使用Docker Compose Docker Compose 容器编排技术 1、现在我们有一个springboot项目,需要依赖Redis、mysql、nginx。 如果使用docker原生部署的话,则需要安装Redi...
    99+
    2023-09-21
    docker 容器 java Powered by 金山文档
  • MySql 8 with docker-compose
    // Docker-compose.yml of MySql 8 version: "3" services:         mysql:              image: mysql              restart: ...
    99+
    2020-09-26
    MySql 8 with docker-compose
  • docker compose 安装Mysql
    第一步:首先安装docker 和docker-compose 这里使用快速安装脚本进行安装 curl -sSL https://get.daocloud.io/docker | sh 第二步:新建/data/mysql目录    data...
    99+
    2023-09-18
    docker java 运维
  • centos7安装docker-compose
    Docker Compose是 docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用。使用 compose,我们可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。确保本机已经安装了d...
    99+
    2023-01-31
    docker compose
  • docker-compose部署nginx+php
    1、首先拉取nginx及php镜像 docker pull nginx:1.21.6 docker pull php:7.4.28-fpm 2、创建本地目录 mkdir /home/nginx-php...
    99+
    2023-09-09
    php nginx docker
  • Docker中的compose简介
    目录Docker Compose 是什么Docker Compose 作用前言一、Docker-compose简介1、docker-compose基础概念2、为什么要使用docker...
    99+
    2023-02-14
    Docker compose介绍 Docker compose
  • docker compose怎么使用
    这篇文章主要介绍“docker compose怎么使用”,在日常操作中,相信很多人在docker compose怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”docker ...
    99+
    2023-06-30
  • 使用docker、docker-compose部署微服务
    使用docker、docker-compose部署微服务 一、使用docker部署1、准备2、上传jar包3、编写dockerfile文件3、构建镜像和容器 二、使用docker-compose部署1、准备服务的jar包和doc...
    99+
    2023-08-30
    docker 微服务 容器
  • docker/docker-compose 部署 nginx+mysql+wordpress 实战
    1. 网络架构图 MariaDB 作为后面的关系型数据库,端口号是 3306; WordPress 是中间的应用服务器,使用 MariaDB 来存储数据,它的端口是 80; Nginx 是前面的反向...
    99+
    2023-09-06
    docker nginx mysql
  • Docker Compose与Docker镜像仓库详解
    目录1.Docker Compose1.1.初识DockerCompose1.2.安装Docker Compose1.3.部署微服务集群1.3.1.compose文件1.3.2.修改...
    99+
    2023-03-21
    Docker镜像仓库 Docker Compose
  • Docker Compose 实践及梳理
    Docker Compose 可以实现 Docker 容器集群的编排,可以通过 docker-compose.yml 文件,定义我们的服务及其需要的依赖,轻松地运行在测试、生产等环境...
    99+
    2024-04-02
  • 使用Docker-compose部署mysql
    前言 虽然docker部署环境比自己下载安装包要方便不少,但是docker的命令还有挂载目录在每次启动容器的时候都去找命令对使用者是很不友好的,而且有时候要启动多个容器的时候显然一个个的启动是很麻烦的。所以如果可以事先将"启动脚本"写好的...
    99+
    2023-09-03
    docker mysql 容器 Powered by 金山文档
  • docker-compose怎么部署Yapi
    本篇内容主要讲解“docker-compose怎么部署Yapi”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“docker-compose怎么部署Yapi”吧!1 安装dockersudo&nbs...
    99+
    2023-06-29
  • Docker-compose怎么部署gitlab
    这篇文章主要介绍“Docker-compose怎么部署gitlab”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Docker-compose怎么部署gitlab”文章能帮助大家解决问题。docker...
    99+
    2023-06-26
  • docker资源限制与compose
    目录 一、私有仓库建立  二、Cgroup 资源配置方法  三、CPU使用率控制  使用 stress 工具测试 CPU 和内存 四、 CPU 周期限制 查询容器的资源限制参数 (1)在指定容器目录中 (2)使用docker inspect...
    99+
    2023-09-02
    linux docker 容器 服务器 运维
  • Docker compose部署minio服务
    目录介绍单机版部署纠删码模式部署分布式部署介绍 最近才知道minio这个对象存储服务中间件,简直相见恨晚,只怪我见识太短浅(哭泣脸)。 说得通俗易懂点,minio的作用就是用来存储文...
    99+
    2022-11-13
    Docker compose部署minio服务 Docker compose
  • Docker 安装启动Jenkins的方法(docker-compose)
    目录安装:1、装备环境变量文件 (.env)2、准备 docker-compose.yml 文件3、启动Jenkins 官网: https://www.jenkins.io/ 官方安...
    99+
    2024-04-02
  • Docker compose 编排工具详解
    Docker Compose Docker Compose是一个定义及运行多个Docker容器的工具,通过 Compose,无需用shell脚本来启动容器,而使用 YAML 文件来配...
    99+
    2024-04-02
  • docker-compose部署Yapi的方法
    1 安装docker sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config...
    99+
    2024-04-02
  • docker-compose如何搭建mongodb、mysql
    这篇文章主要介绍了docker-compose如何搭建mongodb、mysql,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。下面看下docker-compose搭建mong...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作