自定义docker python镜像


前言

搭建python3.7生产环境

1、准备

创建一个测试目录:

$ mkdir composetest
$ cd composetest

在测试目录中创建一个名为 app.py 的文件,并复制粘贴以下内容:

composetest/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)

在此示例中,redis 是应用程序网络上的 redis 容器的主机名,此为docker-compose功能,在同一docker-compose文件下可以service名字进行访问,该主机使用的端口为 6379。

在 composetest 目录中创建另一个名为 requirements.txt 的文件,内容如下:

flask
redis

2、创建 Dockerfile 文件

在 composetest 目录中,创建一个名为的文件 Dockerfile,内容如下:

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
# RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
COPY . .
CMD ["flask", "run"]

Dockerfile 内容解释:

FROM python:3.7-alpine: 从 Python 3.7 映像开始构建镜像。
WORKDIR /code: 将工作目录设置为 /code。
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
设置 flask 命令使用的环境变量。

RUN apk add --no-cache gcc musl-dev linux-headers: 安装 gcc,以便诸如 MarkupSafe 和 SQLAlchemy 之类的 Python 包可以编译加速。
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
复制 requirements.txt 并安装 Python 依赖项。

COPY . . : 将 . 项目中的当前目录复制到 . 镜像中的工作目录。
CMD [“flask”, “run”]: 容器提供默认的执行命令为:flask run。

3、创建 docker-compose.yml

在测试目录中创建一个名为 docker-compose.yml 的文件,然后粘贴以下内容:
前提是你已经配置好了阿里云镜像加速
docker-compose.yml 配置文件

# yaml 配置
version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
  redis:
    image: "redis:alpine"

该 Compose 文件定义了两个服务:web 和 redis。

web:该 web 服务使用从 Dockerfile 当前目录中构建的镜像。然后,它将容器和主机绑定到暴露的端口 5000。此示例服务使用 Flask Web 服务器的默认端口 5000 。
redis:该 redis 服务使用 Docker Hub 的公共 Redis 映像。

4、使用 Compose 命令构建和运行您的应用

在测试目录中,执行以下命令来启动应用程序:

docker-compose up
如果你想在后台执行该服务可以加上 -d 参数:

docker-compose up -d

5 、进入容器

docker exec -it composetest_web_1 sh

https://www.runoob.com/docker/docker-compose.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker允许用户通过Dockerfile来定义自己的镜像。下面是一个简单的示例,演示如何创建一个自定义镜像: 1. 首先,在一个空白目录中创建一个名为Dockerfile的文件。 2. 在Dockerfile中,使用FROM指令指定基础镜像。例如,可以选择一个适合你的应用程序的操作系统作为基础镜像。 ``` FROM ubuntu:latest ``` 3. 接下来,使用RUN指令执行一系列命令来设置镜像的环境。例如,安装一些软件包或配置一些文件。 ``` RUN apt-get update && apt-get install -y software-properties-common ``` 4. 使用COPY指令将本地文件复制到镜像中。例如,复制应用程序的源代码文件。 ``` COPY . /app ``` 5. 使用WORKDIR指令设置工作目录。例如,进入应用程序的根目录。 ``` WORKDIR /app ``` 6. 使用CMD指令定义容器启动时要运行的命令。例如,启动应用程序。 ``` CMD ["python", "app.py"] ``` 7. 保存并关闭Dockerfile。 接下来,你可以使用以下命令构建自定义镜像: ``` docker build -t my-custom-image:tag . ``` 其中,`-t`参数用于指定镜像的名称和标签,`.`表示Dockerfile所在的当前目录。 构建过程可能需要一些时间,取决于你的镜像大小和网络速度。构建完成后,你可以使用以下命令查看所有可用的镜像: ``` docker images ``` 你应该能够看到刚刚构建的自定义镜像。 希望这个简单示例可以帮助你开始创建自己的Docker自定义镜像

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L-960

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值