1 Docker Compose

官方文档:https://docs.docker.com/compose/install/

1.1 简介

定义、运行多个容器

YAML file配置文件

single command 命令有哪些

作用:批量容器编排

Compose

version: '2.0'
services:web:build:.ports:- "5000:5000"volumes:- .:/code- logvolume01:/var/loglinks:- redisredis:image: redis
volumes:logvolume01: {}

1.2 安装

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 国内镜像
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

授权

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

1.3 yaml规则

https://docs.docker.com/compose/compose-file/compose-file-v3/

# 3层version: ' '   # 版本
services:       # 服务服务1:web# 服务配置imagesbuildnetwork...服务2:redis...服务2:redis...
# 其他配置 网路/卷、全局规则
volumes:
networks:
configs:

2 官方 实战 flask

2.1 创建项目文件

https://docs.docker.com/compose/gettingstarted/
1、创建项目

mkdir /home/composetest
cd /home/compose

2、创建 app.py

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

3、requirements.txt

flask
redis

2.2 创建Dockerfile

# syntax=docker/dockerfile:1
FROM python:3.8-alpine
ADD . /code
WORKDIR /code
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
  • 从 Python 3.7 映像开始构建映像。
  • 将工作目录设置为/code.
  • 设置命令使用的环境变量flask。
  • 安装 gcc 和其他依赖项
  • 复制requirements.txt并安装 Python 依赖项。
  • 向镜像添加元数据以描述容器正在侦听端口 5000
  • 将项目中的当前目录复制.到镜像中的workdir .。
  • 将容器的默认命令设置为flask run.

2.3 在Compose文件中定义service

vim docker-compose.yml
version: "3.3"
services:web:build: .               # 自己构建镜像ports:- "5000:5000"redis:image: "redis:alpine"  # 拉取镜像

2.4 Build and run your app with Compose

构建并运行

docker-compose up

构建并运行 – 重构

docker-compose up --build

构建并运行 - - 重构 - 后台运行

docker-compose up --build -d

停止:

docker-compose down

docker-compose
以前都是单个docker run 启动容器
docker-compose 通过docker-compose编写yaml配置文件、可以通过compose 一键启动所有服务,停止

3 实战 博客 wordpress

https://docs.docker.com/samples/wordpress/

mkdir my_wordpress
cd my_wordpress

3.1 docker-compose.yml

version: "3.3"services:db:image: mysql:5.7volumes:- db_data:/var/lib/mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: somewordpressMYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpresswordpress:depends_on:- dbimage: wordpress:latestvolumes:- wordpress_data:/var/www/htmlports:- "8000:80"restart: alwaysenvironment:WORDPRESS_DB_HOST: dbWORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_NAME: wordpress
volumes:db_data: {}wordpress_data: {}

启动

docker-compose up

4 实战 spring-boot

4.1 编辑代码


勾选依赖
Web -> Spring Web
NoSQL -> Spring Data Redis

application.properties

server.port=8080
spring.redis.host=redis

HelloController.java

package com.example.springboot.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@RequestMapping("/hello")public String hello(){return "hello charles";}
}

打包项目

4.2 编辑dokcer文件

Dockerfile

FROM java:8COPY *.jar /app.jarCMD ["--server.port=8080"]EXPOSE 8080ENTRYPOINT ["java","-jar","/app.jar"]

docker-compose.yml
编排项目

version: '3.3'
services:vitcloud-spring-demo:build: .# dockerfile: Dockerfile  # 指定Dokcerfileimage: spring-demo-imagesdepends_on:- redisports:- "8080:8080"   # 外部地址:内部地址redis:# image:"library/redis:alpine"image: redis

4.3 启动项目

丢到服务器

  • demo-0.0.1-SNAPSHOT.jar
  • docker-compose.yml
  • Dockerfile

启动

docker-compose up
docker-compose up --build -d

--build:重新构建
-d:后台模式

学习地址
狂神说:https://www.bilibili.com/video/BV1kv411q7Qc

Dokcer进阶之Compose 实战官方flask、wordpress、spring-boot相关推荐

  1. SpringBoot实战(十三):Spring Boot Admin 动态修改日志级别

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 之前关于线上输出日志一直有个困惑:如何可以动态调整的日志级别,来保证系统在正常运行时性 ...

  2. Spring Boot+Vue前后端分离商城实战(二)Spring Boot 项目构建及使用

    在介绍了基础环境搭建之后,这一篇文章将介绍如何使用 IDEA 进行 Spring Boot 项目的开发和调试,希望大家能够尽快上手和体验 Spring Boot 项目开发.关于 Spring Boot ...

  3. spring boot实战(第十篇)Spring boot Bean加载源码分析

    前言 前面的文章描述了Application对应Bean的创建,本篇将阐述spring boot中bean的创建过程 refresh 首先来看SpringApplication#run方法中refre ...

  4. vue项目开发实战案例_Vue、Spring Boot开发小而完整的Web前后端分离项目实战02

    第02讲 前端项目工具安装及环境搭建 1.1.开发工具:visual studio code 1.1.visual studio code 官网下载地址 https://code.visualstud ...

  5. SpringBoot实战系列1:Spring Boot+Mybatis+MySql实现增删改查

    前言 Spring boot项目目前是Java Web开发领域最受市场欢迎的Spring框架之一,也是构建分布式项目.微服务项目重要基础之一,Spring Boot免去了配置繁杂的依赖和配置,使得开发 ...

  6. Spring Boot 专栏全栈开发实战

    2020 年 11 月 12 日,Spring 官方发布了 Spring Boot 2.4.0 GA 的公告,链接为 Spring Boot 2.4.0 available now.为了让大家能够学习 ...

  7. 云栖社区特邀专家徐雷——Java Spring Boot开发实战系列课程【往期直播回顾】...

    徐雷,花名:徐雷frank:资深架构师,MongoDB中文社区联席主席,吉林大学计算机学士,上海交通大学硕士.从事了 10年+开发工作,专注于分布式架构,Java Spring Boot.Spring ...

  8. 读书笔记《Spring Boot+Vue全栈开发实战》(下)

    本书将带你全面了解Spring Boot基础与实践,带领读者一步步进入 Spring Boot 的世界. 前言 第九章 Spring Boot缓存 第十章 Spring Boot安全管理 第十一章 S ...

  9. Spring Boot 实战系列课程终于齐啦~

    Spring Boot 如今已成为 Java 开发必学技术,其可以大大简化 Spring 应用的初始搭建以及开发过程. Spring Boot 不仅支持直接嵌入 Tomcat,Jetty 或 Unde ...

最新文章

  1. 为什么让A.I.“顶天立地”需要6个多月?
  2. 浅析Java内存模型--ClassLoader
  3. mysql noinstall_Windows 下noinstall方式安装 mysql 5.7.5 m15 winx64(推荐)
  4. PYG教程【五】链路预测
  5. R语言与非参数检验之单样本位置检验
  6. 更优雅的在 Xunit 中使用依赖注入
  7. thinking-in-java(12)通过异常处理错误
  8. 【Hihocoder - 1723】子树统计(线性基合并)
  9. linux下环境变量PATH的用法
  10. android 读取xlsx文件,android怎么解析表格.xlsx文件
  11. Gmail 收信的一些规则
  12. 基于 CNN 和迁移学习的农作物病害识别方法研究
  13. App客户端性能测试点总结
  14. EastFax传真服务器系统与Email相比有什么优势
  15. gjs/seed相关笔记
  16. 新电脑安装win10正版系统(家庭、专业等)
  17. mac修改localhost为指定ip_使用 macOS 服务器更改服务器的 IP 地址
  18. vm打开虚拟机提示“未能启动虚拟机“解决方案
  19. 无线蓝牙耳机手机端app开发_不输AirPods,只花百元就能买到的超级耳机,值了!...
  20. 安徽科技学院2017-2018-1学期15电信12班《Java编程技术》课下作业~解题报告

热门文章

  1. Chrome Extension in CLJS —— 搭建开发环境
  2. 李洪强iOS开发之-cocopods安装
  3. static成员函数不能调用non-static成员函数
  4. 2台xenserver组成的资源池开启HA存在的问题
  5. 适配器模式(Adapter)和外观模式(Facade)
  6. Windows环境下学习Lisp和Scheme的两大利器
  7. 图 深度优先遍历 广度优先遍历 非递归遍历 图解算法过程
  8. linux命令strip
  9. 在下列选项中,没有构成死循环的程序的是?
  10. 包含了主机名到ip地址的映射关系的文件是什么 ?