本想在這篇文中說一下阿里雲主機的採購和選型,又怕大家誤會我是廣告貼,所以關於阿里雲的選購以後我將單獨發到我的博客當中。
閒話少說,進入正題。小型企業站快速上雲其實是一件很容易的事情,但是每次配置服務器卻並不是一件容易的事,每次大家都要找一些需要安裝的插件和組件,有的因爲版本問題,有的因爲翻牆問題最後的安裝過程相當麻煩。Docker就成爲了我們快速部署的工具。
使用Docker進行小型PHP網站LNMP的快速搭建教程
docker
本文中我將以php7+nginx+mysql+爲例在centos6.8以上系統中進行docker環境的搭建,也就是常說的LNMP環境,接下來爲大家簡單進行網站配置的教程.
開始前我們明確一下所要安裝服務的插件及開放的端口
Php7-fpm進程默認開放9000端口,Nginx默認開放80端口,也可以根據需要進行調整,Mysql開放3306端口。
本文中我們採用官方鏡像進行docker源的加速。
拉取鏡像
PHP
docker pull php:7.2.3
MySQL
docker pull mysql:5.7.21
Nginx(Tengine/openresty)
docker pull nginx:1.13.10
啓動容器
啓動容器時,需要注意各容器之間的關聯關係。
在LNMP架構中,WEB服務器(Nginx)需要將PHP請求轉發給php-fpm進行處理,而PHP要進行數據的存取,少不了和數據庫(MySQL)進行交互,所以他們之間存在關聯,那麼啓動時需要指定這些關聯,這個關聯使用networks參數來指定。
建立網絡
docker network create my_net
docker run -it -d -p 3306:3306 --network my_net -e MYSQL_ROOT_PASSWORD=123456 -v /mnt/mysql:/var/lib/mysql --name mysql mysql:5.7.21
docker run -d -p 9000:9000 --name php -v --network my_net /mnt/html:/usr/local/openresty/nginx/html php:7.2.3 #PHP
docker run -d -p 80:80 --name nginx -v /mnt/html:/usr/local/openresty/nginx/html --network my_net nginx:1.13.10 #Nginx
啓動時我們多使用了一個-v參數,這個參數的意思是掛載,作用是將宿主機的一個目錄掛載到容器中指定的目錄,這樣,即使我們銷燬了這個容器,那容器中的數據依然保留在宿主機上,不會丟失。比如數據庫存放數據的data目錄,WEB服務器存放代碼的www目錄,每個服務存放配置文件的目錄等。
web_server:
image: nginx
ports:
- "80:80"
- "443:443"
volumes:
- /mnt/html:/usr/local/openresty/nginx/html
networks:
- "my_net"
db_server:
image: docker.io/mysql:5.7.21
environment:
MYSQL_ROOT_PASSWORD: 123456
ports:
- "3306:3306"
volumes:
- /mnt/mysql:/var/lib/mysql
networks:
- "my_net"
php:
image: docker.io/php:7.2.3
container_name: php
links:
- db_server:mysql
ports:
- "9000:9000"
volumes:
- /mnt/html:/usr/local/openresty/nginx/html
- /mnt/php:/usr/local/etc/php
networks:
- "my_net"
networks:
my_net:
driver: bridge
保存爲docker-compose.yml,並在該文件處執行啓動命令docker-compose up -d
Starting mysql ... done
Starting php ... done
Starting nginx ... done
可以驗證一下是否正常啓動:
docker ps -a 或 docker-compose ps
手打不易,如果覺得有用請關注我!歡迎轉發收藏