您好,登錄后才能下訂單哦!
一、準備鏡像
安裝完docker后,更換完鏡像源(docker的安裝十分簡單自行百度即可)
打開/etc/docker目錄下的daemon.json
添加以下內容
{
"registry-mirrors": ["https://自己的地址.mirror.aliyuncs.com"]
}
docker工作的基礎即是鏡像,可以認為鏡像是一個獨立的由應用組成的虛擬機
重啟docker服務
service docker restart
docker pull nginx:alpine
docker pull php:7-fpm-alpine
docker pull postgres:alpine
可以用docker image ls 隨時查看已下載的鏡像
二、啟動nginx
啟動容器
sudo docker run --rm -d -p 80:80 --name nginx nginx:alpine
此時在瀏覽器地址欄中輸入你虛擬機的ip就可以看到nginx的默認歡迎界面了
docker stop 后面跟上容器的名字或者id就可以停止容器
例如我的這個容器名字叫做nginx
那么輸入命令
docker stop nginx
就可以停止它
三、啟動 LNMP
由于 LNMP 共由3個容器組成,單個啟動過于麻煩,推薦使用 docker-compose 管理并啟動它們。
安裝 docker-compose
docker-compose 是 docker 的多個服務部署工具,以方便地同時啟動多個容器。
可以使用以下命令方便地安裝它
sudo apt-get install -y python-pip && sudo pip install docker-compose
編輯 docker-compose 的配置文件
對于每一個你希望使用 docker-compose 來啟動的項目,都應該在該項目的目錄下配置 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 能夠將請求順利的轉交給 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 啟動服務
sudo docker-compose up -d
測試 LNMP 環境
對了,以上命令都使用了root權限,因此如果想要修改其中的內容可能不太方便。可以使用以下命令來獲取編輯權限。
sudo chmod -R 777 ./data ./web
測試 php
編輯 web/index.php
<?php
phpinfo();
?>
如果一切順利的話,就可以在http://193.112.46.97/index.php看到php的相關信息了。
測試 PostgreSQL
還記得密碼嗎?我提到過,就在 docker-compose 中配置了。因此在實際環境中一定要注意該文件的訪問權限。
至于 PostgreSQL 數據庫的地址嘛,我也提到過,就是這個容器的名稱(此處是 Database )。可以把它想象為一個域名就好了。
編輯 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);
?>
如果一切順利的話,就可以在http://193.112.46.97/test.php看到一個網頁計數器。不斷刷新它試試看。
利用docker搭建 LNMP 環境是不是so easy呢!!
用 docker-compose 停止服務
可以使用以下命令來停止服務,它會自動銷毀相應的容器:
sudo docker-compose down
什么?銷毀?別擔心,你的數據庫已經保存在當前目錄下的data文件夾中了,遷移到任何一臺新的主機,只需要將該目錄打包帶走就行了!
不信?可以重新啟動上面的示例,看看數據庫是否被保存了下來。
……
我不是天生強大,我只是天生要強!!!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。