Dockerfile部署Django应用
FROM python:3.6-slim ENV PYTHONUNBUFFERED 1 RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list WORKDIR /app RUN apt-get update \ && apt-get install -y procps net-tools apt-utils \ && pip install pipenv -i https://mirrors.aliyun.com/pypi/simple/ COPY . /app RUN pipenv sync && pipenv install --dev EXPOSE 8000 RUN chmod +x /app/start.sh CMD ["sh", "start.sh"]
文件目录结构:
在dockerfile所在目录执行:docker build -t xxx:latest .
会根据dockerfile文件进行打包
打包完成之后执行:docker run -td --name my_app -p 9999:8000 my_app:v1
然后就可以通过外部主机访问容器内部
目前只是项目单容器部署,远远无法实现自己的需求;
后期可以尝试多容器部署,跨容器网络通信;可以采用docker-compose的方式进行容器构建
#!/bin/bash pipenv run python manage.py migrate pipenv run python manage.py runserver 0.0.0.0:8000 if [ $1 ]; then if [ $1 = 'celery-beta' ]; then echo "pipenv run celery -A face_safe beat --loglevel=INFO" elif [ $1 = 'celery-worker' ]; then echo "pipenv run celery -c 4 -A face_safe worker --loglevel=INFO" else echo "pipenv run python manage.py $1" fi else echo "default" echo "pipenv run python manage.py migrate" echo "pipenv run python manage.py runserver 0.0.0.0:8000" fi
docker run -td --name face_server_celery_beta face_safe:v1.0.1 sh start.sh celery-beta
version: 3 services: redis: image: redis:latest restart: always hostname: redis volumes: - /mnt/data/redis:/var/lib/redis/data ports: - "6379:6379" # 暴露主机端口 如果不指定,可以在启动容器的时候指定 rabbitmq: image: rabbitmq:management restart: always hostname: rabbitmq environment: - RABBITMQ_DEFAULT_USER=admin - RABBITMQ_DEFAULT_PASS=admin ports: - "5672:5672" - "15672:15672" postgresql: image: postgres:11 restart: always hostname: postgresql volumes: - /mnt/data/postgresql:/var/lib/postgresql/data environment: - POSTGRES_DB=face-server - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres ports: - "5432:5432" go-fastdfs: image: sjqzhang/go-fastdfs:latest restart: always hostname: go-fastdfs volumes: - /mnt/data/fastdfs:/var/lib/fastdfs/data - /mnt/data/fastdfs/conf/cfg.json:/var/lib/fastdfs/data/conf/cfg.json environment: - GO_FASTDFS_DIR=/mnt/data/fastdfs ports: - "8089:8080" hwface: build: context: . dockerfile: Dockerfile restart: always hkapi: build: context: . dockerfile: Dockerfile face-safe: build: context: . dockerfile: Dockerfile command: sh start.sh ports: - "8000:8000" depends_on: - redis - rabbitmq - go-fastdfs - postgresql face-safe-celery-beta: build: context: . dockerfile: Dockerfile command: sh start.sh celery-beta depends_on: - redis - rabbitmq - go-fastdfs - postgresql face-safe-celery-worker: build: context: . dockerfile: Dockerfile command: sh start.sh celery-worker depends_on: - redis - rabbitmq - go-fastdfs - postgresql face-safe-mq_image: build: context: . dockerfile: Dockerfile command: sh start.sh mq_image depends_on: - redis - rabbitmq - go-fastdfs - postgresql networks: default: external: name: host
本文来自博客园,作者:一石数字欠我15w!!!,转载请注明原文链接:https://www.cnblogs.com/52-qq/p/14251369.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2018-01-08 项目目录
2018-01-08 数据库操作__目录
2018-01-08 flask_session_源码剖析
2018-01-08 Flask中的单例模式