新聞中心
一、準(zhǔn)備鏡像
安裝完docker后,更換完鏡像源(docker的安裝十分簡(jiǎn)單自行百度即可)
打開(kāi)/etc/docker目錄下的daemon.json
添加以下內(nèi)容
思禮網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,思禮網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為思禮上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的思禮做網(wǎng)站的公司定做!
{
"registry-mirrors": ["https://自己的地址.mirror.aliyuncs.com"]
}
docker工作的基礎(chǔ)即是鏡像,可以認(rèn)為鏡像是一個(gè)獨(dú)立的由應(yīng)用組成的虛擬機(jī)
重啟docker服務(wù)
service docker restart
docker pull nginx:alpine
docker pull php:7-fpm-alpine
docker pull postgres:alpine
可以用docker image ls 隨時(shí)查看已下載的鏡像
二、啟動(dòng)nginx
啟動(dòng)容器
sudo docker run --rm -d -p 80:80 --name nginx nginx:alpine
此時(shí)在瀏覽器地址欄中輸入你虛擬機(jī)的ip就可以看到nginx的默認(rèn)歡迎界面了
docker stop 后面跟上容器的名字或者id就可以停止容器
例如我的這個(gè)容器名字叫做nginx
那么輸入命令
docker stop nginx
就可以停止它
三、啟動(dòng) LNMP
由于 LNMP 共由3個(gè)容器組成,單個(gè)啟動(dòng)過(guò)于麻煩,推薦使用 docker-compose 管理并啟動(dòng)它們。
安裝 docker-compose
docker-compose 是 docker 的多個(gè)服務(wù)部署工具,以方便地同時(shí)啟動(dòng)多個(gè)容器。
可以使用以下命令方便地安裝它
sudo apt-get install -y python-pip && sudo pip install docker-compose
編輯 docker-compose 的配置文件
對(duì)于每一個(gè)你希望使用 docker-compose 來(lái)啟動(dòng)的項(xiàng)目,都應(yīng)該在該項(xiàng)目的目錄下配置 docker-compose.yml 。
編輯 docker-compose.yml,
version: "3"
services:
Nginx:
image: nginx:alpine
ports:
- 80:80
volumes:- ./web:/usr/share/nginx/html:ro
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
PHP:
image: undefined01/php:7-fpm-alpine
volumes:- ./web:/var/www/html:rw
Database:
image: postgres:alpine
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "rootroot"
volumes:- ./data:/var/lib/postgresql/data:rw
編輯 nginx 的配置文件
為了讓 nginx 能夠?qū)⒄?qǐng)求順利的轉(zhuǎn)交給 php 處理,我們需要更改 nginx 的配置文件
編輯 nginx.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ .php$ {
fastcgi_pass PHP:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
使用 docker-compose 啟動(dòng)服務(wù)
sudo docker-compose up -d
測(cè)試 LNMP 環(huán)境
對(duì)了,以上命令都使用了root權(quán)限,因此如果想要修改其中的內(nèi)容可能不太方便??梢允褂靡韵旅顏?lái)獲取編輯權(quán)限。
sudo chmod -R 777 ./data ./web
測(cè)試 php
編輯 web/index.php
phpinfo();
?>
如果一切順利的話(huà),就可以在http://193.112.46.97/index.php看到php的相關(guān)信息了。
測(cè)試 PostgreSQL
還記得密碼嗎?我提到過(guò),就在 docker-compose 中配置了。因此在實(shí)際環(huán)境中一定要注意該文件的訪(fǎng)問(wèn)權(quán)限。
至于 PostgreSQL 數(shù)據(jù)庫(kù)的地址嘛,我也提到過(guò),就是這個(gè)容器的名稱(chēng)(此處是 Database )??梢园阉胂鬄橐粋€(gè)域名就好了。
編輯 web/test.php
?php
$dbconn = pg_connect('host=Database user=postgres password=rootroot')
or die('Could not connect: ' . pg_last_error());
pg_query('CREATE TABLE IF NOT EXISTS test ( tester INT )');
pg_query('INSERT INTO test VALUES (0)');
$res = pg_query('SELECT * FROM test') or die('Query failed: ' . pg_last_error());
$num = pg_num_rows($res);
echo "You have visited this site $num times";
pg_free_result($res);
pg_close($dbconn);
?>
如果一切順利的話(huà),就可以在http://193.112.46.97/test.php看到一個(gè)網(wǎng)頁(yè)計(jì)數(shù)器。不斷刷新它試試看。
利用docker搭建 LNMP 環(huán)境是不是so easy呢??!
用 docker-compose 停止服務(wù)
可以使用以下命令來(lái)停止服務(wù),它會(huì)自動(dòng)銷(xiāo)毀相應(yīng)的容器:
sudo docker-compose down
什么?銷(xiāo)毀?別擔(dān)心,你的數(shù)據(jù)庫(kù)已經(jīng)保存在當(dāng)前目錄下的data文件夾中了,遷移到任何一臺(tái)新的主機(jī),只需要將該目錄打包帶走就行了!
不信?可以重新啟動(dòng)上面的示例,看看數(shù)據(jù)庫(kù)是否被保存了下來(lái)。
……
我不是天生強(qiáng)大,我只是天生要強(qiáng)?。。?/p>
分享名稱(chēng):docker搭建LNMP環(huán)境
地址分享:http://fisionsoft.com.cn/article/ggpcsp.html