Dockerfile加docker-compose构建编排web应用

Dockerfile加docker-compose构建编排web应用

用flask框架写一个web服务器应用,使用Dockerfile构建镜像,然后用docker-compose编排启动应用。

1. 创建一个简单的flask应用

创建flask-app目录,在目录下创建一个名为 app.py 的文件,并添加以下代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, Docker Compose!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

这是一个非常简单的 Flask 应用,当你访问根路径时,它将返回 "Hello, Docker Compose!"。

2. 编写Dockerfile文件

为该 Flask 应用创建 Dockerfile。此文件将告诉 Docker 如何构建您的应用程序镜像。同目录下创建一个名为 Dockerfile 的文件,并添加以下代码:

# 使用官方的 Python 镜像作为基础
FROM python:3.9

# 将工作目录设置为 /app
WORKDIR /app

# 将当前目录的所有文件复制到 /app
COPY . /app

# 安装 Flask
RUN pip install flask

# 公开 Flask 默认的 5000 端口
EXPOSE 5000

# 启动 Flask 应用
CMD ["python""app.py"]

3. 编写docker-compose.yml文件

创建 Docker Compose 配置以便可以启动和管理该 Flask 应用程序。同目录下创建一个名为 docker-compose.yml 的文件,并添加以下代码:

version: '3.8'

services:
  web:
    build:
      context: .
    ports:
      - "5000:5000"

字段说明:

  • version: 指定 Docker Compose 文件的版本。3.8 是一个常用的版本,它支持许多最新的特性。如果你使用不同版本的 Docker Compose,确保此字段与其兼容。

  • services: 表示 Compose 文件中的一组服务,每个服务定义一个 Docker 容器。

    • web: 这是服务的名称。你可以使用任何描述性的名称。

      • build: 指定构建 Docker 镜像的方法。

        • context: 表示构建的上下文,即 Docker 将从哪个目录开始读取构建所需的文件。 . 指当前目录。
      • ports: 这是端口映射配置,用于将 Docker 容器内部的端口与主机上的端口连接。 -5000:5000: 表示将容器的 5000 端口映射到主机的 5000 端口。这意味着,当您访问主机的 5000 端口时,实际上是访问容器中的 5000 端口。

4. 使用 Docker Compose 启动 Flask 应用

最终目录结构如下,同一目录中创建了app.py, Dockerfile 和 docker-compose.yml 文件。

tree flask-app/
flask-app/
├── app.py
├── docker-compose.yml
└── Dockerfile

使用 Docker Compose 来构建和运行 Flask 应用,这里切换root账号操作。

# 构建 Docker 镜像
docker-compose build

docker images
REPOSITORY      TAG       IMAGE ID       CREATED          SIZE
flask-app-web   latest    d9ebd0ef4b34   21 minutes ago   1.01GB

#
 启动 Flask 应用
docker-compose up

本地没有python:3.9时,docker回去镜像仓库中拉取。官方仓库拉取较慢,可以配置国内镜像源加速:

$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
      "https://hub-mirror.c.163.com/",
      "https://dockerproxy.com/"
  ]
}
EOF
$ sudo systemctl restart docker

5. 访问应用

Docker 将会根据我们在 docker-compose.yml 文件中定义的配置启动一个容器,通过容器节点所在ip+端口访问,效果如下:

alt

注意:

关闭docker节点防火墙或者放行规则。

本文由 mdnice 多平台发布

相关推荐

  1. DockerfileDocker Compose

    2024-04-30 22:04:05       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 22:04:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 22:04:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 22:04:05       87 阅读
  4. Python语言-面向对象

    2024-04-30 22:04:05       96 阅读

热门阅读

  1. 程序包 org.junit 不存在解决方案

    2024-04-30 22:04:05       30 阅读
  2. 安全架构概述

    2024-04-30 22:04:05       26 阅读
  3. 【工程记录】ChatGLM3-6B微调实践的更新说明

    2024-04-30 22:04:05       34 阅读
  4. 前端项目文件夹命名,用横线好,还行下划线好

    2024-04-30 22:04:05       26 阅读
  5. Python 学习笔记

    2024-04-30 22:04:05       31 阅读
  6. 区块链详解

    2024-04-30 22:04:05       25 阅读
  7. docker-compose docker的批量管理工具

    2024-04-30 22:04:05       32 阅读
  8. js关于数字的方法

    2024-04-30 22:04:05       29 阅读
  9. FPGA之zynq_DDR(1)

    2024-04-30 22:04:05       34 阅读
  10. C语言入门练习(1)

    2024-04-30 22:04:05       31 阅读