Docker 搭建 LNMP 环境
Docker:是一个开源的应用级别的虚拟化工具,能够让您轻松而优雅地部署多种服务,无需因为开发环境与部署环境的依赖问题而焦头烂耳。 LNMP:LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP。
- 安装 Docker
mkdir ~/docker && cd ~/docker && sudo apt-get -y install docker.io - 更换镜像源
sudo su - cat >> /etc/docker/daemon.json <<- EOF { "registry-mirrors": ["https://mirror.ccs.tencentyun.com"] } EOF systemctl restart docker exit - 下载 Nginx 镜像
sudo docker pull nginx:alpine - 下载 PHP 镜像
sudo docker pull php:7-fpm-alpine - 下载 PostgreSQL 镜像
sudo docker pull postgres:alpine - 启动容器 ``` sudo docker run –rm -d -p 80:80 –name nginx nginx:alpine
这个命令中涉及到的参数有: –rm:表示这个容器执行完后会被直接销毁。 –name:指定这个容器的名称。 -d:表示这个容器会在后台运行。 -p:表示开放容器的80端口到主机的80端口。 -v:表示将nginx的配置文件挂载到容器的对应目录下。
7. 停止容器
sudo docker stop nginx
// 查看所有容器及其ID sudo docker container ls
// 停止容器 sudo docker stop <容器ID或容器名称>容器ID或容器名称>
8. 安装 docker-compose
// docker-compose 是 Docker 的多个服务部署工具,以方便地同时启动多个容器 sudo apt-get install -y python-pip && sudo pip install docker-compose
9. 创建 docker-compose 的配置文件
touch /docker/docker-compose.yml
10. 编辑 docker-compose 的配置文件
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 ``` 11. 创建 Nginx 的配置文件 ``` touch /docker/nginx.conf ``` 12. 编辑 Nginx 的配置文件 ``` 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;
} } ``` 13. 使用 docker-compose 启动服务 ``` sudo docker-compose up -d
// 查看启动的服务 sudo docker container ls
14. 编辑权限
sudo chmod -R 777 ./data ./web
15. 创建index.php文件
touch /docker/web/index.php
16. 编辑index.php文件
<?php phpinfo(); ?>
17. 创建test.php文件
touch /docker/web/test.php
18. 编辑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); ?>
19. 使用 docker-compose 停止服务
sudo docker-compose down
常用命令:
// 查看 docker 目录下的所有文件和目录(包括隐藏文件和目录) ls -la /docker
// 以长格式列出data 目录下的所有文件(包括隐藏文件),并且不会对文件列表进行排序 ls -lf ./data ```
原文链接:https://cloud.tencent.com/lab/courseDetail/682679941464569