我意识到有各种不同的策略和Dev Opsy架构可以将Docker容器部署到生产环境中,但我仍然在学习Docker的一些基础知识,我真的在寻找最直接的东西将以下示例移动到AWS或其他远程站点的方法。我想我了解如何在各种容器中设置项目,链接它们等等。但我不了解如何保存或打包现有代码并将其部署到其他地方。
以下是我尝试使用的示例模板。
多克尔-撰写
web:
restart: always
build: ./web
expose:
- "8000"
links:
- postgres:postgres
- redis:redis
volumes:
- /usr/src/app
- /usr/src/app/static
env_file: .env
command: /usr/local/bin/gunicorn docker_django.wsgi:application -w 2 -b :8000
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
postgres:
restart: always
image: postgres:latest
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data/
redis:
restart: always
image: redis:latest
ports:
- "6379:6379"
volumes:
- redisdata:/data
Dockerfile
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
这个Dockerfile只是创建一个名为' code'的目录。这是我假设实际开发将在哪里发生的地方。即;运行docker compose,创建容器,然后在代码目录中开始开发。所以,让我们说我已经完成了我正在处理的任何事情,现在我使用上面完全相同的模板部署到生产中,不知道这个Dockerfile只是创建一个空的'代码' AWS中的目录?我尝试从本地计算机上的代码目录部署的工作怎么样?如何打包实际的代码目录以转移到生产?
答案 0 :(得分:1)
docker build
的结果应该是一个图像,其中包含在任何地方运行应用程序所需的所有命令,脚本,编译代码和解释代码。您的开发人员可以在进行更改时将自己的代码副本注入到具有卷装入的映像中,以避免不断重建整个容器(尽管docker的层缓存确实缩短了构建时间)。
构建完成后,您将docker push
您的图片升级到注册表服务器,例如Docker Hub,或者您可以运行自己的(docker除了自己的商业产品之外还有一个注册表图像)或者使用AWS等第三方提供的注册表图像。然后,您的生产环境应docker pull
并在部署到生产时运行此映像。