Dokcer进阶之Compose 实战官方flask、wordpress、spring-boot

文章目录

*
1 Docker Compose

+ 1.1 简介
+ 1.2 安装
+ 1.3 yaml规则
2 官方 实战 flask

+ 2.1 创建项目文件
+ 2.2 创建Dockerfile
+ 2.3 在Compose文件中定义service
+ 2.4 Build and run your app with Compose
3 实战 博客 wordpress

+ 3.1 docker-compose.yml
4 实战 spring-boot

+ 4.1 编辑代码
+ 4.2 编辑dokcer文件
+ 4.3 启动项目

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/log
    links:
    - redis
  redis:
    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
        # 服务配置
        images
        build
        network
        ...
    服务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 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)

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

3、 requirements.txt

flask
redis

2.2 创建 Dockerfile


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.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data: {}
  wordpress_data: {}

启动

docker-compose up

4 实战 spring-boot

4.1 编辑代码

Dokcer进阶之Compose 实战官方flask、wordpress、spring-boot
勾选依赖
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";
    }
}

打包项目

Dokcer进阶之Compose 实战官方flask、wordpress、spring-boot

4.2 编辑dokcer文件

Dockerfile

FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8080"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

docker-compose.yml
编排项目

version: '3.3'
services:
  vitcloud-spring-demo:
    build: .

    image: spring-demo-images
    depends_on:
      - redis
    ports:
      - "8080:8080"
  redis:

    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

Original: https://blog.csdn.net/zx77588023/article/details/122689010
Author: 有勇气的牛排
Title: Dokcer进阶之Compose 实战官方flask、wordpress、spring-boot

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/745901/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 编写python代码估算sin(x)的值

    编写python代码估算sin(x)的值 原创 CorwinPC2022-07-18 17:22:06博主文章分类:Python ©著作权 文章标签 python 迭代 程序代码 …

    Python 2023年5月25日
    078
  • 真香啊,这招可以轻松抓取某音短视频数据(附 Python 代码)

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年10月11日
    036
  • Flask之Jinja2模板与Flask-WTF

    01-文档 官方文档:http://docs.jinkan.org/docs/jinja2/ 02-基本语义 Jinja2做构成的模板文件中,文本内容大致可以分成几个种类。比如特殊…

    Python 2023年5月24日
    071
  • 在开发环境中使用服务发现

    使用 Docker Compose 模拟 Zookeeper 集群 实现服务发现的方法有很多种,其中较为常见的一种是利用分布式注册中心,解决服务之间协调的问题。 在众多注册中心应用…

    Python 2023年6月3日
    047
  • python 保存dataframe_在python2中将dataframe保存到CSV

    我正在尝试将数据帧保存到Csv。当我打印数据帧时,它会产生我想要的输出,但是当我将数据帧保存到csv文件时,我只得到保存到csv文件的最后一行数据帧。。到目前为止我所做的。。。。。…

    Python 2023年8月8日
    070
  • 用PyGame实现贪吃蛇游戏

    准备工作 配置环境 使用 Anaconda配置新环境。通用代码为: conda create -n 新建环境名字 python==3.X 我写的代码是 conda create -…

    Python 2023年9月19日
    038
  • 在python中调用ChatGPT,并使用tkinter打包成exe

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年10月11日
    047
  • ip、ifconfig 和 route命令介绍与网络配置

    linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中…

    Python 2023年6月16日
    051
  • 将时间序列转化为监督学习问题

    这里提供两种不同的数据划分方式,看喜好选择了鸭 pandas的shift()函数 import pandas as pd df = pd.DataFrame() df["…

    Python 2023年8月6日
    039
  • pandas数据分析(二)开始了解数据

    上篇根据自己实际工作内容,写了一个简单的程序,用于读取csv文件,简单处理后输出到excel文件。接下来想更多更深入地使用pandas进行数据分析,其实最缺的是各种各样的数据集。搜…

    Python 2023年8月16日
    068
  • .Net之接口小知识

    目的 通过一个简单的项目,在原来的文章基础上完善一下常用的几种WebApi编写方式以及请求方式,一方面是用于给我一个前端朋友用来学习调用接口,另一方面让我测试HttpClient的…

    Python 2023年10月22日
    050
  • 如何在GPU上训练模型

    如何在GPU上训练模型(基于CIFAR10数据集) 准备工作 模型训练 模型测试 GPU能够通过内部极多进程的并行运算,取得比CPU高一个数量级的运算速度。所以本文描述一下如何在G…

    Python 2023年9月8日
    062
  • 数据分析处理快速上手教程matplotlib+numpy+pandas(基础讲解)

    文章目录 python数据挖掘 * 一、数据挖掘基础环境安装与使用 – 1.1 库的安装 1.2 Jupyter Notebook使用 + 1.2.1 Jupyter …

    Python 2023年8月22日
    046
  • 总在用户态调试 C# 程序,终还是搭了一个内核态环境

    一:背景 一直在用 WinDbg 调试用户态程序,并没有用它调试过 内核态,毕竟不是做驱动开发,也没有在分析 du…

    Python 2023年10月23日
    048
  • pkuseg从安装到运行

    VMWare Workstation 15,安装Fedora Workstation 35 64位。 软件环境:python 3.10,pip、cython等均为最新 python…

    Python 2023年8月3日
    036
  • 手写字体识别实验-Python课程设计

    安装python打开手写识别文件夹中的安装包文件夹,双击python3.7.1可执行文件,进行安装。 弹出窗口第一步,勾选第二个复选框 Add Python 3.7 to PATH…

    Python 2023年9月1日
    045
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球