dockerfiles编译 举个例子包括完整app
时间: 2023-05-29 13:01:28 浏览: 71
以下为一个基于Django框架的完整应用的Dockerfile编译示例:
```
# 基础镜像
FROM python:3.8-slim-buster
# 安装系统依赖
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
postgresql-client \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 创建应用工作目录
RUN mkdir /app
WORKDIR /app
# 安装Python依赖
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . /app/
# 设置环境变量
ENV DJANGO_SETTINGS_MODULE=mysite.settings.docker
# 运行应用
CMD ["gunicorn", "-c", "config/gunicorn.conf.py", "mysite.wsgi:application"]
```
该 Dockerfile 文件做了以下工作:
1. 基于 Python 3.8 为基础镜像。
2. 安装 `postgresql-client` 等系统依赖。
3. 在 `/app` 目录下创建工作目录。
4. 将 `requirements.txt` 文件复制到工作目录下,并根据该文件中定义的 Python 依赖安装相关软件包。
5. 将应用代码复制到工作目录下。
6. 设置 Django 环境变量为 `mysite.settings.docker`。
7. 使用 `CMD` 命令运行应用,其中使用 `gunicorn` 作为 Web 服务器,并通过 `config/gunicorn.conf.py` 文件配置 gunicorn 的参数,启动 Django 应用程序。
使用该 Dockerfile 构建镜像,并运行应用的示例 Docker 命令:
```
$ docker build -t my-django-app .
$ docker run --rm -it my-django-app
```
该命令将会构建一个名为 `my-django-app` 的 Docker 镜像,并将其运行在一个 Docker 容器中。容器将会监听在 `0.0.0.0:8000` 地址上,可以通过浏览器或者 HTTP 客户端访问。