Docker-Compose
说明
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务
Compose 使用的三个步骤
- 使用 Dockerfile 定义应用程序的环境
- 使用
docker-compose.yaml
定义构成应用程序的服务,这样它们可以在隔离环境中一起运行 - 最后,执行
docker compose up
命令来启动并运行整个应用程序 docker compose up -d
启动并于后台运行
注意
docker-compose up -d
:这是 Docker Compose 的旧版命令格式,适用于使用 Docker Compose 作为单独的可执行文件安装的情况,通常是较早的 Docker 环境或手动安装 Docker Compose 时。这里的docker-compose
是一个独立的命令行工具。docker compose up
:这是 Docker 20.10.0 及以后版本中引入的新版命令格式,随着 Docker Desktop 和 Docker Engine 集成了 Docker Compose 作为子命令。这意味着你不再需要单独安装 Docker Compose,直接通过docker
命令即可调用 Compose 功能。
安装
Linux
从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases
1 | 下载 Docker Compose 的当前稳定版本。要安装其他版本的 Compose,请替换 1.24.1 |
将可执行权限应用于二进制文件:
1 | sudo chmod +x /usr/local/bin/docker-compose |
创建软链:
1 | sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose |
测试是否安装成功:
1 | docker-compose --version |
注意: 对于 alpine,需要以下依赖包: py-pip,python-dev,libffi-dev,openssl-dev,gcc,libc-dev,和 make。
macOS
Mac 的 Docker 桌面版和 Docker Toolbox 已经包括 Compose 和其他 Docker 应用程序,因此 Mac 用户不需要单独安装 Compose。Docker 安装说明可以参阅 MacOS Docker 安装
windows PC
Windows 的 Docker 桌面版和 Docker Toolbox 已经包括 Compose 和其他 Docker 应用程序,因此 Windows 用户不需要单独安装 Compose。Docker 安装说明可以参阅 Windows Docker 安装
示例
docker-compose.yml
docker compose up -d //根据 docker-compose.yml ,创建服务和镜像
1 | version: '2' |
jimureport-mysql 服务
db 目录下有 Dockerfile 和 jimureport.mysql5.7.create.sql 文件
Dockerfile
1
2
3
4
5
6
7
8
9FROM mysql:8.0.19
MAINTAINER jeecgos@163.com
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY ./jimureport.mysql5.7.create.sql /docker-entrypoint-initdb.djimureport.mysql5.7.create.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23CREATE database if NOT EXISTS `jimureport` default character set utf8mb4 collate utf8mb4_unicode_ci;
use `jimureport`;
/*
Navicat Premium Data Transfer
Source Server : mysql5.7
Source Server Type : MySQL
Source Server Version : 50727
Source Host : 127.0.0.1:3306
Source Schema : jimureport
Target Server Type : MySQL
Target Server Version : 50727
File Encoding : 65001
Date: 11/10/2021 17:48:45
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
# 建表语句和数据
jimureport
当前目录是SpringBoot 根目录,有 Dockerfile文件
Dockerfile
1 | FROM anapsix/alpine-java:8_server-jre_unlimited |
部署MongoDB
- 编写
docker-compose.yml
文件
1 | // docker-compose.yml |
- 运行
docker-compose up -d
生成容器并后台启动
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 王文哲的博客!