在Ubuntu上使用Docker-Compose對LEMP堆棧進行Dockerizing

在Ubuntu上使用Docker-Compose對LEMP堆棧進行Dockerizing

泊塢窗,撰寫 是一個命令行工具,用於定義和管理多容器泊塢窗應用程序。 Compose是一個python腳本,它可以很容易地用pip命令安裝(pip是從python包存儲庫安裝Python軟件的命令)。 使用compose,我們可以使用單個命令運行多個docker容器。 它允許您將容器創建為服務,非常適合您的開發,測試和登台環境。

在本教程中,我將逐步指導您使用docker-compose創建LEMP堆棧環境(LEMP = Linux - Nginx - MySQL - PHP)。 我們將在不同的Docker容器中運行所有組件,我們設置了一個Nginx容器,PHP容器,PHPMyAdmin容器和一個MySQL / MariaDB容器。

條件:

  • Ubuntu服務器16.04 -64bit
  • 根特權

步驟1 - 安裝Docker

在這一步中,我們將安裝Docker。 Docker在Ubuntu存儲庫中可用,只需更新您的存儲庫然後安裝它。

更新ubuntu存儲庫併升級:

命令和apt-get update更新
命令和apt-get升級

從ubuntu存儲庫安裝最新的Docker。

sudo apt-get install -y docker.io

啟動docker並啟用它以在啟動時啟動:

systemctl啟動泊塢窗
systemctl啟用docker

Docker服務正在運行。

接下來,您可以嘗試使用以下命令使用docker來測試它:

docker run hello-world

來自docker的Hello world。

你好Docker

步驟2 - 安裝Docker-Compose

在第一步中,我們已經安裝了Docker。 現在我們將安裝docker-compose。

我們需要python-pip進行組合安裝,使用apt安裝python和python -pip:

sudo apt-get install -y python python-pip

安裝完成後,使用pip命令安裝docker-compose。

pip install docker-compose

現在查看docker-compose版本:

docker-compose -version

已安裝Docker-compose。

在Ubuntu上安裝Docker Compose

步驟3 - 創建和配置Docker環境

在這一步中,我們將構建docker-compose環境。 我們將使用非root用戶,因此我們需要立即創建該用戶。

添加名為'的新用戶葉加瀨'(如果你願意,可以在這裡選擇你自己的用戶名):

useradd -m -s / bin / bash hakase
passwd hakase

接下來,將新用戶添加到'搬運工人'組並重啟docker。

usermod -a -G docker hakase
sudo systemctl重啟docker

現在用戶'葉加瀨'可以使用沒有sudo的docker。

接下來,從root用戶,使用su登錄到'hakase'用戶。

su - hakase

為撰寫環境創建新目錄。

mkdir lemp-compose /
cd lemp-compose /

這是我們的docker-compose環境,Docker容器中的所有文件都必須在此目錄中。 當我們使用docker-compose時,我們需要一個名為'的.yml文件泊塢窗,compose.yml“。

在'lemp-compose'目錄中,創建一些新目錄和docker-compose.yml文件:

touch docker-compose.yml
mkdir -p {logs,nginx,public,db-data}

  • 日誌:Nginx日誌文件的目錄。
  • nginx的:包含Nginx配置,如虛擬主機等。
  • 公眾:web文件,index.html和PHP信息文件的目錄。
  • DB-數據:MariaDB數據目錄卷。

在''中創建日誌文件error.log和access.log日誌' 目錄。

觸摸日誌/ {error,access} .log

在''中創建一個新的nginx虛擬主機配置文件nginx的' 目錄:

vim nginx / app.conf

粘貼下面的配置:

上游php {服務器phpfpm:9000; }服務器{server_name 193.70.36.50; error_log“ /opt/bitnami/nginx/logs/myapp-error.log”; access_log“ /opt/bitnami/nginx/logs/myapp-access.log”; 根/ myapps; index index.php index.html; 位置/ {try_files $ uri $ uri / /index.php?$args; } location〜.php $ {include fastcgi.conf; fastcgi_intercept_errors開啟; fastcgi_pass php; } location〜*。(js | css | png | jpg | jpeg | gif | ico)$ {有效期滿; log_not_found關閉; }}

保存文件並退出vim。

在''中創建一個新的index.html文件和PHP信息文件公眾' 目錄。

迴聲LEMP Docker-撰寫hakase-labs '> public / index.html
迴聲'> public / info.php

現在您可以看到環境目錄,如下所示:

Docker構成項目環境

步驟4 - docker-compose.yml文件的配置

在上一步中,我們已經創建了容器所需的目錄和文件。 在這一步中,我們要編輯文件'泊塢窗,compose.yml“。 在docker-compose.yml文件中,我們將為LEMP堆棧定義我們的服務,每個容器的基本映像和docker卷。

登錄'葉加瀨'用戶並編輯 泊塢窗,compose.yml 文件與vim:

su - hakase
cd lemp-compose /
vim docker-compose.yml

- 定義Nginx服務

粘貼下面的nginx配置:

nginx:圖像:'bitnami / nginx'端口:-'80:80'鏈接:-phpfpm卷:-./logs/access.log:/opt/bitnami/nginx/logs/myapp-access.log-./logs /error.log:/opt/bitnami/nginx/logs/myapp-error.log-./nginx/app.conf:/bitnami/nginx/conf/vhosts/app.conf-./public:/myapps

在該配置中,我們已經定義:

  • nginx的:服務名稱
  • 圖片:我們正在使用'bitnami / nginx的'碼頭圖片
  • 端口:公開容器端口 80 到主機端口 80
  • 鏈接:鏈接'nginx的'服務容器'phpfpm' 容器
  • :將本地目錄掛載到容器。 掛載日誌文件目錄,掛載Nginx虛擬主機配置並掛載Web根目錄。

- 定義PHP-fpm服務

將配置粘貼到Nginx塊下面:

phpfpm:圖片:'bitnami / php-fpm'端口:-'9000:9000'卷:-./public:/myapps

我們在這裡定義:

  • phpfpm:定義服務名稱。
  • 圖片:使用'為phpfpm服務定義基本圖像bitnami / PHP-FPM' 圖片。
  • 端口:我們使用TCP端口運行PHP-fpm 9000 並暴露端口 9000 給主人。
  • :掛載web根目錄'公眾' 至 '安裝MyApps'在容器上。

- 定義MySQL服務

在第三個塊中,粘貼下面的配置以用於MariaDB服務容器:

mysql:圖像:'mariadb'端口:-'3306:3306'卷:-./db-data:/var/lib/mysql環境:-MYSQL_ROOT_PASSWORD = hakase-labs123

在這裡您可以看到我們正在使用:

  • MySQL的:作為服務名稱。
  • 圖片:容器基於'MariaDB的'碼頭圖片。
  • 端口:使用端口的服務容器 3306 用於MySQL連接,並將其暴露給端口上的主機 3306 .
  • : DB-數據 目錄mysql
  • 環境:設置環境變量'MYSQL_ROOT_PASSWORD'對於docker鏡像的mysql root密碼,在構建容器時執行。

- PHPMyAdmin服務配置

最後一個塊,粘貼下面的配置:

phpmyadmin:圖像:'phpmyadmin / phpmyadmin'重新啟動:始終端口:-'8080:80'鏈接:-mysql:mysql環境:MYSQL_USERNAME:根MYSQL_ROOT_PASSWORD:hakase-labs123 PMA_HOST:mysql

我們正在使用'phpmyadmin'泊塢窗圖像,映射容器端口 808080 在主機上,將容器鏈接到 MariaDB的 容器,總是設置重啟並設置docker鏡像的一些環境變量,包括set'PMA_HOST“。

保存文件並退出vim。

你可以看到完整的例子 GitHub上.

步驟5 - 運行Docker-Compose

現在我們準備好運行docker-compose了。 注意:當您想要運行docker-compose時,您必須位於docker-compose項目目錄中,並確保存在具有compose配置的yml文件。

運行以下命令以啟動LEMP堆棧:

docker-compose up -d

-d: 作為守護進程或背景運行

您將看到已創建新容器的結果,請使用以下命令進行檢查:

docker-compose ps

運行docker-compose

現在我們有四個容器運行Nginx,PHP-fpm,MariaDB和PHPMyAdmin。

步驟6 - 測試

檢查主機上docker-proxy使用的端口。

netstat -plntu

所有docker端口映射到主機

我們可以看到Nginx容器的端口80,MariaDB容器的端口3306,php-fpm容器的端口9000以及PHPMyAdmin容器的端口8080。

從Web瀏覽器訪問端口80,您將看到我們的index.html文件。

http://serverip-address/

nginx docker容器正在工作

確保PHP-fpm正在運行,從Web瀏覽器訪問它。

http://serverip-address/info.php

php-fpm docker容器正在運行

訪問MySQL shell中的MySQL容器。

docker-compose exec mysql bash
mysql -u root -p
類型MYSQL密碼:hakase-labs123

現在創建一個新數據庫:

create database hakase_db;
出口

可以訪問MariaDB mysql shell容器,我們已經創建了一個新的數據庫'hakase_db“。

訪問mysql shell docker容器

接下來,在端口8080上訪問PHPMyAdmin: http://serverip-address:8080/.

您將看到PHPMyAdmin登錄頁面,只需輸入用戶名''和密碼是'葉加瀨-labs123“。

phpmyadmin碼頭工人集裝箱

您將自動連接到已在中定義的mysql容器 PMA_HOST 環境變量。

點擊'Go',你會看到連接到''的phpmyadmin儀表板MySQL的' 容器。

phpmyadmin和mysql docker容器正在運行

成功! LEMP堆棧在docker-compose設置下運行,由四個容器組成。

參考文獻

https://hub.docker.com/r/bitnami/nginx/

https://hub.docker.com/r/bitnami/php-fpm/

https://hub.docker.com/_/mariadb/

https://hub.docker.com/r/phpmyadmin/phpmyadmin/

https://docs.docker.com/compose/

https://github.com/yuzukiseo/hakase-labs/tree/master/lemp-compose

資源