将Docker容器部署到生产环境的最佳方式是什么?使用git的Docker部署工作流程
- 添加
Dockerfile
到Git仓库和生产系统上运行docker build
- 提交更改到一个容器
docker commit
并将其推到一个私人码头工人库,然后用docker pull
拉它到生产系统。
即使我没有更改基础架构,只是应用程序代码,我应该运行docker commit
吗?
我希望我的问题很清楚。
将Docker容器部署到生产环境的最佳方式是什么?使用git的Docker部署工作流程
Dockerfile
到Git仓库和生产系统上运行docker build
docker commit
并将其推到一个私人码头工人库,然后用docker pull
拉它到生产系统。即使我没有更改基础架构,只是应用程序代码,我应该运行docker commit
吗?
我希望我的问题很清楚。
理想情况下,您将拥有某种注册表服务器,并且您的Docker容器将在那里,您的生产环境会将这些容器拉入并使用它们。当您的应用程序代码发生变化时,您不必更新Docker容器,在Dockerfile中添加/项目并将其与--volumes-from
共享给其他容器。你的应用程序应该完全独立于容器。
现在有像无花果这样的工具可以让你用docker容器启动开发环境。然后,您将进一步采取这种行动,并将您的应用程序容器部署在CoreOS群集中。
以下是我的productAPI,这只是将项目代码添加到容器中。
除非系统依赖关系为项目更改,否则不应该更改Dockerfile。
Dockerfile
FROM phusion/baseimage
MAINTAINER Alex Goretoy <[email protected]>
ENV DEBIAN_FRONTEND noninteractive
ENV PRODUCT_API_PATH /opt/product_api
RUN mkdir -p $PRODUCT_API_PATH/
ADD . $PRODUCT_API_PATH/
RUN $PRODUCT_API_PATH/setup.sh
EXPOSE 8080
CMD python $PRODUCT_API_PATH/manage.py runserver
setup.sh
#!/bin/bash
apt-get update
apt-get install -y git \
wget \
openssl \
libssl-dev \
libffi-dev \
python-pip \
python2.7-dev \
postgresql-9.3 \
libpq-dev
apt-get update
apt-get install -y libcurl4-openssl-dev
apt-get update
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
pip install -r $PRODUCT_API_PATH/requirements.txt
# Clean up APT when done.
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
我要说的是,在生产环境中,你只是想拉和运行容器(S)的最后一个图像(S)。
因此,有一个私人注册的想法是好的,你的输水管道将是:
在我身边,我没有使用docker commit
,我更喜欢docker build ... -t ...
的标签。当我使用交互式shell调试容器时,我只使用commit
。