• Dockerfile实例及应用场景


    Dockerfile 可以用于多种场景和需求。下面是几个不同的 Dockerfile 示例以及各自的应用场景。

    1. Python Web 应用程序

    应用场景:

    构建和部署一个使用 Flask 框架的 Python Web 应用程序。

    Dockerfile 示例:

    # 使用 Python 3.8 基础镜像
    FROM python:3.8
    
    # 设置工作目录
    WORKDIR /app
    
    # 安装依赖
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    # 拷贝源码到工作目录
    COPY . .
    
    # 设置环境变量
    ENV FLASK_APP=app.py
    
    # 暴露端口
    EXPOSE 5000
    
    # 运行 Flask 应用
    CMD ["flask", "run", "--host=0.0.0.0"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2. Node.js 应用

    应用场景:

    构建和部署一个使用 Node.js 和 Express 的后端服务。

    Dockerfile 示例:

    # 使用 Node 14 基础镜像
    FROM node:14
    
    # 创建应用目录
    WORKDIR /usr/src/app
    
    # 安装依赖
    COPY package*.json ./
    RUN npm install
    
    # 拷贝源代码
    COPY . .
    
    # 暴露端口
    EXPOSE 8080
    
    # 启动应用
    CMD ["npm", "start"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3. 多阶段构建的 Java 应用

    应用场景:

    用于构建 Java 应用,并使用多阶段构建来减小最终镜像的大小。

    Dockerfile 示例:

    # 使用 Maven 基础镜像进行构建
    FROM maven:3.6.3-jdk-11 AS build
    WORKDIR /build
    COPY . .
    RUN mvn clean package
    
    # 运行阶段
    FROM openjdk:11-jre-slim
    WORKDIR /app
    COPY --from=build /build/target/my-app.jar .
    EXPOSE 8080
    CMD ["java", "-jar", "my-app.jar"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4. 数据库镜像

    应用场景:

    创建一个预配置的 MySQL 数据库镜像,适用于开发和测试。

    Dockerfile 示例:

    # 使用 MySQL 基础镜像
    FROM mysql:5.7
    
    # 添加数据库初始化脚本
    ADD setup.sql /docker-entrypoint-initdb.d
    
    # 设置环境变量(例如,数据库名和密码)
    ENV MYSQL_DATABASE=mydatabase
    ENV MYSQL_ROOT_PASSWORD=mypassword
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    【C++】笔试训练(六)
    React 组件
    UNITY AR VPS空间-视觉-特征点定位 SDK
    既要又要的正则匹配规则
    SpringCloud 组件Gateway服务网关【gateway快速入门】
    删除单链表偶数节点
    CSS处理器-Less/Scss
    矿产行业供应链协同系统解决方案:构建数智化平台,保障矿产资源安全供应
    Go 学习
    学习笔记——动态路由——OSPF(OSPF协议的工作原理)
  • 原文地址:https://blog.csdn.net/m0_57021623/article/details/133000718