2016-12-28 26 views
0

試圖建立與碼頭工人, 一個LAMP堆棧,發現並試圖用https://hub.docker.com/r/linode/lamp/泊塢窗 - LAMP堆棧問題 - 預製的圖片

但是我找不到,不知道如何訪問鏈接到文件域 或如何從example.com更改域名等。

我認爲我真正的問題是如何更改文件或從其他人重建圖像 。

+0

使用['運行-v'(https://docs.docker.com/引擎/參考/運行/#/卷共享文件系統)在docker容器中裝載主機目錄。來自主機的掛載目錄中的任何更改將立即應用於容器內。 –

回答

1

首先我想提一提,我不是這個圖像+方法的忠實粉絲,因爲它捆綁了多個微服務。我建議使用apache2的容器,用於mysql等的容器。

但是對於LAMP的設置。我正在使用網站上提供的documentation。 我有一個路徑/xx/test/index.html其中包含一些HTML。我將映射容器端口的容器端口+將我的文件裝載到容器中的正確文件夾。

docker run -p 80:80 -t -i -v /root/test/:/var/www/example.com/public_html/ linode/lamp /bin/bash 

我正在使用-ti並啓動bash會話。在這裏,他們正在啓動apache2 + mysql服務。 (這是官方文檔的方式不是我這是一個奇怪的做法。):

[email protected]:/# service apache2 start 
* Starting web server apache2                                * 
[email protected]:/# service mysql start 
* Starting MySQL database server mysqld                            [ OK ] 
* Checking for tables which need an upgrade, are corrupt or were 
not closed cleanly. 

啓動服務後,您可以通過按ctrl + p然後ctrl + q離開容器。現在你可以檢查你的server-ip:80來檢查你的html代碼。如果你想替換example.conf,你也可以安裝你自己的apache2配置。

如果你想改變圖像內foldernames我會建議創建自己的dockerfile其開頭:

FROM docker pull linode/lamp 
RUN changes.. 
+0

感謝您的意見。這是我尋找的東西的一部分。 – user2453885

1

首先,考慮在單獨的容器中使用microservices。這將提供優勢,如:

  • 故障包容
  • 升級的方便性
  • 消除長期致力於單一的技術棧
  • 易於擴展
  • 系統彈性
  • ...

現在,Docker的創建時間爲microservices記住,因此對於您的LAMP Stack,我建議在容器中使用Apache+PHP,在另一個容器中使用mysql。爲了讓您的容器與彼此溝通,請創建一個網絡並將兩個容器放入其中。

現在回到你的問題:

你必須使用你的自定義配置文件有3個選項:

  1. 創建容器時,您需要安裝到您的配置文件(推薦):

    sudo docker run -d --name my-apache -v /path/to/custom/httpd.conf:/usr/local/apache2/conf/httpd.conf httpd 
    

請注意本例使用library(官方)apache2圖片來自docker hub,您應該諮詢圖片創建者的自定義圖片說明。

  • 可以手動編輯運行容器內的配置文件和commit它爲新的圖像。

    sudo docker commit my-apache myrepository/myimagename:tag 
    sudo docker run -d myrepository/myimagename:tag 
    
  • 通過Dockerfile創建自己的圖像,並使用FROM <base image>指令。

  • +0

    謝謝。但是,微服務不是一種解決高活動大規模解決方案而不是小規模項目的手段嗎?如果只有100人看到您的網站等,那麼開銷是否值得呢? – user2453885

    +1

    它是一種折衷,如果它適用於100位訪問者,我會參加微服務。因爲資源開銷很小。使用微服務架構可以減少管理開銷。對升級場景進行映像,您正在使用自定義燈圖像,如果要更新mysql而不是apache,則需要創建自己的自定義映像,但使用微服務+ docker官方映像將其視爲「docker pull」命令。 –

    +0

    感謝您的澄清。 – user2453885