我繼承了我以前的開發人員的任務,以糾正他所犯的任何錯誤。正在構建一個自包含的碼頭集裝箱正確的生產方式來完成它
目前我們的PHP開發人員正在部署他們自己的dockerfile內以下組成的泊塢窗容器內APP:
- PHP-5.6fpm或PHP-7.0-FPM爲基礎
- 安裝了PHP擴展
- 安裝nginx的 - 精簡版
- 安裝supervisord
- 副本nginx.conf
- 副本supervisor.conf
內部主管我們將有2個命令:一個用於nginx和一個用於php。然後主管將成爲Dockerfile末尾的默認CMD。
容器內的/ app目錄是應用程序的一個副本所在的位置。
我們在一個m3 AWS ec2服務器上部署並啓動容器。在ec2服務器內部有nginx正在監聽某個端口。我們附加了一個LB來監聽應用程序端口映射的容器:例如,app1位於端口8001上,app2位於端口8002上,等等。我們使用其他服務器來爲應用程序提供服務(比如RDS for db,redis由elatic-cache等完成)。
目前這些容器正在工作 - 但是 - 我想知道它是否通過黑客和斜槓工作,如果這些容器實際上是適當的。
問題: - 我創建應用程序容器時是否正確? - 如果答案是否定的,應該建立正確的方式才能實現正確的生產碼頭部署,我們最終會放置Kubernetes
所以在現實中: 容器應該建立在它運行的環境服務器上。應用程序本身應該通過卷使用容器,而不是在容器內部複製,每個依賴項(服務)應該獨立構建 - 正確嗎? – azngunit81
在實踐中的不同情況取決於你擁有/想要擁有的環境。但是,據我所知,您至少會有一個開發和測試環境。您在開發環境中構建容器,或者您有一個Jenkins/Gitlab CI作業。在這裏,您有兩個選項,一個是將數據添加到正在構建的容器中,另一個是將數據添加到卷中,以便您可以擴展。如果您需要使用Nginx,Redis,Apache,DB,NPM或任何其他服務,則您需要爲每個服務器分別安裝不同的容器 – Sergiu