欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 重温Docker 构建

重温Docker 构建

2025/3/28 9:06:39 来源:https://blog.csdn.net/yueritian/article/details/146469469  浏览:    关键词:重温Docker 构建

Dockerfile

  • 单镜像生成
# 使用 Python 3.13-slim 作为基础镜像
FROM python:3.13-slim# 设置工作目录
WORKDIR /app# 复制要求的依赖文件到容器内
COPY requirements.txt /app/# 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt# 复制源代码到容器内
COPY . /app/# 设置环境变量(可选)
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0# 暴露 Flask 服务的端口
EXPOSE 5000# 使用 Gunicorn 启动 Flask 应用
# app:app:格式为 <module>:<application>。
# 第一个 app 是模块名(即包含 Flask 应用实例的 Python 文件名,不包括 .py 扩展名)。
# 第二个 app 是 Flask 应用实例的变量名
#(即在 app.py 文件中定义的 app = Flask(__name__) 中的 app)
CMD ["gunicorn", "--config", "gunicorn_config.py", "app:app"]

docker-compose

  • 多镜像综合管理
version: '3'services:flask-app:build:context: ./app  # 这里指向 Flask 应用代码目录,即 Dockerfile 所在目录image: flask-app:latest  # 使用构建好的 flask-app 镜像volumes:- ./app:/app  # 将代码目录挂载到容器,便于实时更新代码ports:- "8000:8000"  # 暴露 Flask 应用端口networks:- app-networkdepends_on:- emqx  # Flask 应用依赖 EMQX 服务emqx:image: emqx/emqx:latest  # 使用官方 EMQX 镜像ports:- "1883:1883"  # MQTT 默认端口- "8883:8883"  # MQTT over SSL- "8083:8083"  # WebSocket 默认端口- "8084:8084"  # WebSocket over SSLvolumes:- ./ssl:/opt/emqx/ssl  # 挂载 SSL 证书environment:- EMQX_LISTENER__TCP__DEFAULT=1883- EMQX_LISTENER__SSL__DEFAULT=8883- EMQX_LISTENER__WS__DEFAULT=8083- EMQX_LISTENER__WSS__DEFAULT=8084networks:- app-networknginx:image: nginx:latest  # 使用官方 Nginx 镜像volumes:- ./nginx.conf:/etc/nginx/nginx.conf  # 自定义 Nginx 配置- ./ssl:/etc/nginx/ssl  # 挂载 SSL 证书ports:- "80:80"  # HTTP- "443:443"  # HTTPSdepends_on:- flask-app- emqxnetworks:- app-networknetworks:app-network:driver: bridge
  • 简单示例
version: '3'services:my-python-app:    # 会根据dockerfile创建imagebuild: .expose:- "5000"  # 暴露给同一网络中的其他容器networks:- app-networknginx:image: nginx:latestvolumes:- ./nginx.conf:/etc/nginx/nginx.conf  # 挂载配置文件ports:- "80:80"  # 将容器的80端口映射到主机的80端口depends_on:- my-python-app  # 确保 Flask 容器启动后再启动 Nginxnetworks:- app-networknetworks:app-network:driver: bridge# 构建
docker-compose up --build
# 后台运行
docker-compose up -d
# 重启nginx,这个是yml里的名字
docker-compose restart nginx
# 进入到nginx里
docker exec -it helloproj_nginx_1 bash
# 再nginx里访问容器
curl http://my-python-app:5000

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词