使用compose构建Docker多容器应用(Nginx+PHP+MySQL+Redis)

首先安装compose

#下载并移动到/usr/local/bin目录下
curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
#赋予可执行权限
chmod +x /usr/local/bin/docker-compose

后执行docker-compose --version 如果能看显示对应的版本号说明安装成功

一个空目录下创建NginxPHP两个目录,首先进入Nginx目录并创建一个Dockerfile文件

cd Nginx
vi Dockerfile

在Dockerfile文件中写入如下指令

FROM Nginx:latest
copY default.conf /etc/Nginx/conf.d/default.conf

保存Dockerfile文件后再创建一个default.conf内容

#以下内容仅供参考,请按实际环境定制
server {
    listen       80;
    server_name  localhost;
    root   /usr/share/Nginx/html;
    index  index.html index.htm index.PHP;
    location ~ \.PHP$ {
        fastcgi_pass   PHP-fpm:9000;
        fastcgi_index  index.PHP;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/Nginx/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

保存文件后再执行 cd ../PHP 进入PHP目录 编辑Dockerfile文件(主要增加了一些常用扩展,请按实际情况定制) 内容如下

FROM PHP:7.3-fpm
RUN docker-PHP-ext-install pdo pdo_MysqL MysqLi \
&& pecl install redis-4.2.0 && docker-PHP-ext-enable redis

然后保存,cd .. 回到外层目录创建docker-compose.yml文件

 vi docker-compose.yml 并键入如下内容

version: '3'
networks:
  dev-net:
    driver: bridge
services:
 MysqL:
    image: MysqL:latest
    command: --default-authentication-plugin=MysqL_native_password
    restart: always
    environment:
      MysqL_ROOT_PASSWORD: root
    networks:
     - dev-net
 Nginx:
    build: Nginx
    restart: always
    ports:
      - 80:80
    volumes:
    - /home/wwwroot/default/:/usr/share/Nginx/html
    depends_on:
      - MysqL
      - redis
      - PHP-fpm
    networks:
     - dev-net
 PHP-fpm:
    build: PHP
    volumes:
    - /home/wwwroot/default/:/usr/share/Nginx/html
    networks:
     - dev-net
 redis:
    image: redis:latest
    networks:
     - dev-net

保存后执行

docker-compose up -d

等待完成自动构建即可

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...