2016-09-19 51 views
0

目前我有一個託管網頁(主要是PHP)的Docker容器。數據庫現在存儲在AWS上的服務器上。爲了開發的目的,我想在Docker容器中創建一個本地數據庫。我做了一些Google搜索,看起來像大多數人建議創建一個單獨的容器來託管MySQL。由於這只是一個開發數據庫,​​所以我想知道是否可以避免設置另一個容器並將MySQL直接放入承載網頁的容器中。要做到這一點,我嘗試安裝MySQL服務器:碼頭集裝箱中的MySQL

sudo apt-get install mysql-server 

Mysql安裝很好做到這一點。然後我試圖運行MySQL交互shell:

mysql -u root -p 

當我這樣做,我得到了以下錯誤ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我可以運行在同一個碼頭工人容器mysql的還是我需要創建一個單獨一個?

+0

hi @ tyler-hilbert,你有沒有試過'mysql -u root -p'? –

+0

@Andy K um yea,這是在 –

+0

問題中給出錯誤的命令,很抱歉@泰勒 - 希爾伯特在這裏很晚。我會看看tomo早晨。 –

回答

3

真的沒有努力設置單獨的MySQL容器。真正的努力是將其安裝在現有容器內。

我建議您創建docker組合文件並定義應用程序和數據庫容器(確保您的docker組件安裝在您的開發環境中,大多數情況下它應該已經安裝)。

創建文件泊塢窗 - compose.yml(你可以在同一文件夾創建其中Dockerfile是你的項目,一般項目的根文件夾)與下列內容:

version: '2' 
services: 
    app: 
    image: your_app_docker_image_name 
    ...more config options depending on your project (volumes, ports, etc) 
    db: 
    image: mariadb 
    volumes: 
     - './user/db:/var/lib/mysql' 
    environment: 
     - MYSQL_ALLOW_EMPTY_PASSWORD=true 

要啓動項目運行的

docker-compose up 

這將解除您的應用程序容器和單獨的MySQL容器(故意沒有root密碼,因爲這是用於開發目的)。 現在你可以從你的應用程序容器訪問MySQL服務器這樣

mysql -h db -u root 

使用泊塢窗組成,你可以設置複雜的環境容易。當部署到生產或其他測試環境時,您不需要更改Dockerfile。

1

有許多專業人士爲每項服務分開容器。 要在同一容器中安裝php + apache + mysql,您必須找到像這樣的圖像https://github.com/tutumcloud/lamp,或者從Dockerfile中自行構建它。

但試圖想象有一天,您決定將您的數據庫存儲引擎從Mysql切換到Percona或Maria,或者您想要開始爲您的應用程序使用Memcached/Redis。如果您將服務作爲單獨的容器進行操作,以上兩種方式都不會有任何問題。