我一直在阅读和学习Docker,并试图正确选择要使用的Django设置。到目前为止,有两种:
Docker撰写或Dockerfile
我知道Dockerfile在Docker Compose中使用,但我不确定将所有内容放在一个大Dockerfile中,对不同的图像使用多个FROM命令是否是个好做法?
我想使用几个不同的图像,包括:
uwsgi
nginx
postgres
redis
rabbitmq
celery with cron
请建议使用Docker建立这种类型环境的最佳实践是什么。
如果有帮助,我在Mac上,所以使用boot2docker。
我遇到的一些问题:
Docker Compose与Python3不兼容
我想容器化我的项目,所以如果一个大Dockerfile
是不理想的,那么我觉得我需要打破它使用Docker撰写
我可以让项目Py2和Py3兼容,所以我倾向于django-compose
Dockerfiles是用来构建一个映像的,例如,从Ubuntu的骨架上,你可以在一个映像上添加mysql,在另一个映像上添加mywordpress。
撰写YAML文件是取这些图像并内聚地运行它们。
例如,如果你在docker-compose中。Yml文件一个名为db的服务:
services:
db:
image: mySQL --- image that you built.
还有一个叫wordpress的服务,比如:
wordpress:
image: mywordpress
然后在mywordpress容器内,你可以使用db连接到你的mySQL容器。这种魔力是可能的,因为你的docker主机创建了一个网桥(网络覆盖)。
Dockerfile
Dockerfile是一个简单的文本文件,其中包含用户可以调用来组装图像的命令。
例如,Dockerfile
FROM ubuntu:latest
MAINTAINER john doe
RUN apt-get update
RUN apt-get install -y python python-pip wget
RUN pip install Flask
ADD hello.py /home/hello.py
WORKDIR /home
码头工人组成
码头工人组成
是一个定义和运行多容器Docker应用程序的工具。
在docker-compose中定义组成应用程序的服务。Yml,这样它们就可以在一个隔离的环境中一起运行。
只需运行docker-compose up,就可以在一个命令中运行一个应用程序
例如,docker-compose.yml
version: "3"
services:
web:
build: .
ports:
- '5000:5000'
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}