2017-10-04 43 views
0

我繼承了我以前的開發人員的任務,以糾正他所犯的任何錯誤。正在構建一個自包含的碼頭集裝箱正確的生產方式來完成它

目前我們的PHP開發人員正在部署他們自己的dockerfile內以下組成的泊塢窗容器內APP:

  • PHP-5.6fpm或PHP-7.0-FPM爲基礎
  • 安裝了PHP擴展
  • 安裝nginx的 - 精簡版
  • 安裝supervisord
  • 副本nginx.conf
  • 副本supervisor.conf

內部主管我們將有2個命令:一個用於nginx和一個用於php。然後主管將成爲D​​ockerfile末尾的默認CMD。

容器內的/ app目錄是應用程序的一個副本所在的位置。

我們在一個m3 AWS ec2服務器上部署並啓動容器。在ec2服務器內部有nginx正在監聽某個端口。我們附加了一個LB來監聽應用程序端口映射的容器:例如,app1位於端口8001上,app2位於端口8002上,等等。我們使用其他服務器來爲應用程序提供服務(比如RDS for db,redis由elatic-cache等完成)。

目前這些容器正在工作 - 但是 - 我想知道它是否通過黑客和斜槓工作,如果這些容器實際上是適當的。

問題: - 我創建應用程序容器時是否正確? - 如果答案是否定的,應該建立正確的方式才能實現正確的生產碼頭部署,我們最終會放置Kubernetes

回答

0

那麼這肯定是錯誤的,並且會影響Docker的目的。它應該是每個容器的一個應用程序/服務,但是,對於您的情況,您已擁有全部1個容器。我建議你將服務分成特定的容器。

此外,你不會建立容器推動生產。它們應該已經建立在以前的環境中,不管可能是什麼(預產品,開發,測試)。

您現在掌握的方式會使其難以擴展,並且每次爲每個環境構建容器時都會浪費時間,有時候這樣做可能會失去同步,因爲您可以構建開發/測試/預產品容器的方式和生產方式不同。

+0

所以在現實中: 容器應該建立在它運行的環境服務器上。應用程序本身應該通過卷使用容器,而不是在容器內部複製,每個依賴項(服務)應該獨立構建 - 正確嗎? – azngunit81

+0

在實踐中的不同情況取決於你擁有/想要擁有的環境。但是,據我所知,您至少會有一個開發和測試環境。您在開發環境中構建容器,或者您有一個Jenkins/Gitlab CI作業。在這裏,您有兩個選項,一個是將數據添加到正在構建的容器中,另一個是將數據添加到卷中,以便您可以擴展。如果您需要使用Nginx,Redis,Apache,DB,NPM或任何其他服務,則您需要爲每個服務器分別安裝不同的容器 – Sergiu

相關問題