当前位置:   article > 正文

Dockerfile实例及应用场景

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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/834637
推荐阅读
  

闽ICP备14008679号