Docker-Compose

1.安装Docker

sudo apt -y install docker.io

docker version 查看版本号

docker help 查看帮助文档


2.更换镜像源

sudo su -
cat >> /etc/docker/daemon.json <<- EOF
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
systemctl restart docker
exit

3.下载镜像

sudo docker pull nginx:alpine

sudo docker pull php:7-fpm-alpine

sudo docker pull postgres:alpine


4.启动容器

sudo docker run --rm -d -p 80:80 --name nginx nginx:alpine
  • 这个命令中涉及到的参数有:

    -- rm:表示这个容器执行完后会被直接销毁。

    --name:指定这个容器的名称。

    -d:表示这个容器会在后台运行。

    -p:表示开放容器的80端口到主机的80端口。

    -v:表示将nginx的配置文件挂载到容器的对应目录下。
  • localhost:80访问nginx

5.停止容器

docker stop dockerId

6.安装docker-compose工具

sudo apt-get install -y python-pip && sudo pip install docker-compose

7.配置docker-compose.yml

touch ~/docker/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
# ./ 指.yml所在的路径
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
  • 这个配置文件中涉及到的参数有:

    • version:表示这个配置文件使用第三套标准。
    • services:表示需要启动的服务(容器)列表。
  • 对于每一个服务,又有:image:表示该服务使用的镜像。
    • ports:表示该服务开放的端口。
    • volumes:表示将某目录或文件挂载到容器的相应位置上,后面的ro、rw表示于容器是否可读写。此处挂载了配置文件、数据库和网站代码。
    • enviornment:设置该容器的环境变量。此处通过环境变量的形式设置数据库的账号和密码。

8.配置nginx.conf

touch ./nginx.conf #docker-compose.yml所在路径

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;
}
}

9.启动docker-compose

sudo docker-compose up -d

sudo docker container ls #查看启动服务
  • 给映射文件夹赋权限,避免没有权限而导致的访问失败
sudo chmod -R 777 ./data ./web

10.测试

  • 创建index.php touch ~/docker/web/index.php
<?php
phpinfo();
?>
  • 创建test.php touch ~/docker/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);
?>
  • 停止服务
    sudo docker-compose stop

Docker-Compose快速搭建LNMP的更多相关文章

  1. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...

  2. 利用Docker Compose快速搭建本地测试环境

    前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...

  3. Docker: 快速搭建LNMP网站平台

    快速搭建LNMP网站平台 步骤: 1.自定义网络(这里建立一个自定义网络,名字叫 lnmp, 让LNMP网站的服务,都加入这个自定义网络)docker network create lnmp2.创建M ...

  4. Docker Compose 一键部署LNMP

    Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...

  5. 使用 Docker Compose 快速构建 TiDB 集群

    本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...

  6. 阿里云体验实验室 教你如何《快速搭建LNMP环境》

    ## 体验平台简介 面向开发者和中小企业打造的一站式.全云端的开发平台,打开浏览器就可以开发.调试.上线,所测即所得,并结合无服务器的模式,重新定义云原生时代的研发工作方法论.旨在降低开发者上手成本和 ...

  7. Docker快速搭建LNMP环境

    一.使用Dockerfile制作镜像 前面的博客中已经介绍了如何基于容器制作镜像,此方法的原理是使用一个正在运行的容器,根据生产所需进行配置更改等操作后,使其满足生产环境,再将这个容器打包制作为镜像, ...

  8. 烂泥:学习ubuntu之快速搭建LNMP环境

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 现在公司使用的都是ubuntu系统,这几天由于个别项目需要,需要搭建一个LNMP环境.为了快速搭建这个环境,我使用是apt-get方式进行安装.具体的操作 ...

  9. Docker进阶之八:搭建LNMP网站平台实战

    搭建LNMP网站平台实战 LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写.L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可 ...

  10. docker compose环境搭建

    概述 Docker Compose提供一个简单的基于YAML配置语言.用于描写叙述和组装多容器的分布式应用. 使用docker定义和执行复杂的应用.使用compose,能够在一个文件中,定义多容器的应 ...

随机推荐

  1. js函数防抖节流

    // 3.1 函数防抖: // 当持续触发事件时,一定时间段内没有再次触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事件,就重新开始延时.// 也就是说当一个用户一直触发这个函数, ...

  2. 页面div垂直内容超出后,edge浏览器右侧没有自动出现滚动条

    搜索网上解决办法,是给父元素添加样式 overflow-y:scroll; height:100vh; 但此举只是给该父元素侧边添加滚动条,而且不好配合回到顶部这一效果 最后发现是在父组件的包裹元素中 ...

  3. 剑指 offer 第 21 天

    第 21 天 位运算(简单) 剑指 Offer 15. 二进制中1的个数 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量). ...

  4. 使用dataX收获的教训

    首先是安装dataX,安装非常简单,只需下载对应的压缩包即可. 下载地址:https://github.com/alibaba/DataX 首先我出现的第一个错误:命令提示符界面出现出现乱码. 解决方 ...

  5. Python爬虫基础教程2

    beautifulsoup4介绍/遍历文档树 bs4 > 从html或xml文件中提取的python库 用它来解析爬取回来的xml 安装:pip install beautifulsoup4 p ...

  6. 机器学习基础09DAY

    分类算法之逻辑回归 逻辑回归(Logistic Regression),简称LR.它的特点是能够是我们的特征输入集合转化为0和1这两类的概率.一般来说,回归不用在分类问题上,因为回归是连续型模型,而且 ...

  7. Github美化日记 - 又菜又爱玩

    Github美化日记 - 又菜又爱玩 一.咱就说 无论是技术大牛, 或者是技术小菜, 都希望有一个好看的Github首页吧!(快说你想要! ![iShot_2023-04-05_18.58.32.mi ...

  8. [Java SE]反射之Class

    1 获取 指定Class 的类名 package cn.johnnyzen.bd.gatewayservice; import org.junit.Test; @Test public void ge ...

  9. [数据库]Oracle数据迁移至HIVE(待续)

    step1 导出csv数据,并 call sql_to_csv('select * from BE_JJZKJCQKTJ', 'OUT_PATH', 'DA.BE_JJZKJCQKTJ.csv'); ...

  10. LeeCode 942 增减字符串匹配

    LeeCode 942 题目描述: 由范围 [0,n] 内所有整数组成的 n+1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中: 如果 perm[i] < perm[i + 1]  ...