近年來,容器化的技術(shù)受到了越來越多的關(guān)注。Docker作為容器化技術(shù)的佼佼者,其在LAMP的應(yīng)用上是相當(dāng)常見。而在現(xiàn)在的分布式架構(gòu)下,眾多公司更加傾向于使用LNMP,這時候Docker的出現(xiàn)為LNMP應(yīng)用提供了非常好的解決方案。
Docker LNMP,在搭建環(huán)境時最為常見的方式是先創(chuàng)建一個php容器,再讓nginx和mysql通過網(wǎng)絡(luò)模擬連接該容器。以下是一個典型的docker-compose文件代碼實(shí)現(xiàn):
version: "3" services: php: image: php:7.0-fpm volumes: - ./php/www:/var/www/html - ./php/php.ini:/usr/local/etc/php/php.ini restart: always nginx: image: nginx:1.13 volumes: - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf - ./nginx/logs:/var/log/nginx - ./php/www:/var/www/html ports: - "80:80" depends_on: - php restart: always mysql: image: mysql:5.7 volumes: - ./mysql/data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=somedb - MYSQL_USER=someuser - MYSQL_PASSWORD=somepassword ports: - "3306:3306" restart: always
從上面的代碼可見,我們使用了三個容器,分別為php、nginx和mysql。通過Docker,我們提供了一套穩(wěn)定、快捷的構(gòu)建環(huán)境方式,而且我們還可以隨意進(jìn)行擴(kuò)容,做到Docker容器的平滑升級。
總之,Docker LNMP的優(yōu)點(diǎn)顯而易見,它可以提供穩(wěn)定、快捷的環(huán)境搭建,一鍵式的部署,為開發(fā)者帶來了便利。無論是開發(fā)、測試、生產(chǎn),都可以做到完全相同的環(huán)境,消除因開發(fā)環(huán)境的不同而產(chǎn)生的維護(hù)負(fù)擔(dān)。