將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
。