docker搭建 LNMP 环境
admin
2023-03-08 20:41:20
0

一、准备镜像
安装完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

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文件夹中了,迁移到任何一台新的主机,只需要将该目录打包带走就行了!
不信?可以重新启动上面的示例,看看数据库是否被保存了下来。
……
我不是天生强大,我只是天生要强!!!

相关内容

热门资讯

台电换新Logo六个字花近百万... 日前,台电弃用了沿用80年、由“当代草圣”于右任题写的招牌Logo字体,花了近百万(新台币,下同)设...
“百度AI称一律师被判刑”构成... 澎湃新闻记者 谭君江苏南京执业律师李小亮发现,在百度手机 APP、百度网站搜索其个人姓名+职务时,百...
DeepSeek被曝狂融500... 潮新闻客户端 记者 张云山 据外媒The Information报道,中国人工智能明星公司DeepS...
问一问局部装修, 可以直接通过装修公司预约局部装修,也可以直接在齐家网预约局部装修风服务,大家可以先留下个人的姓名和所...
乳胶漆要刷几遍,间隔时间 1、乳胶漆可以喷涂2~3遍,也可以喷涂4遍。如果是夏天,一般需要1到2个小时,秋冬季需要4个小时以上...
理发店墙面刷什么颜色比较好 1、一般需要根据理发店的装修风格来选择乳胶漆的颜色,如果装修风格偏向古典风格,可以选择颜色深一点的颜...
卫生间墙面刷什么漆可以防水 卫生间墙面最好刷低水溶性涂料。这种涂料的优点在于易于施工、成本低、施工方便、无毒,耐油、耐碱、可以用...
原创 入... vivoS30最让人眼前一亮的是两款“甜酷碰撞”配色:粉色或黄色底色与黑色中框的拼接,打破了传统配色...
墙面刷乳胶漆几遍好 乳胶漆一般需要三遍,首先第1遍的时候要使用浓度比较高的乳胶漆,浅浅的一层即可,等待干燥之后涂抹第2遍...
俄乌同意延长停火,泽连斯基签令... 据凤凰卫视报道,俄罗斯总统助理乌沙科夫5月8日表示,俄方同意美国总统特朗普提出的“将俄乌停火延长至5...