前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker搭建LNMP环境(php-fpm)

docker搭建LNMP环境(php-fpm)

作者头像
benny
发布2020-02-25 11:46:47
2.8K0
发布2020-02-25 11:46:47
举报

18年刚出来实习的时候就搭建过lnmp开发环境,教程为docker 搭建LAMP开发环境,拉的是一个集成的lnmp环境,今天使用mysql、nginx、php的镜像来搭建多个容器的php-fpm环境。

准备

安装docker

只是单纯的记录步骤,不用知道为什么,照着执行就对了。无脑操作

  • 更新包
代码语言:javascript
复制
sudo apt-get update
  • 安装以下包以使apt可以通过HTTPS使用存储库(repository)
代码语言:javascript
复制
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  • 添加Docker官方的GPG密钥
代码语言:javascript
复制
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 设置stable存储库
代码语言:javascript
复制
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  • 再次更新包
代码语言:javascript
复制
sudo apt-get update
  • 安装最新版本的Docker CE
代码语言:javascript
复制
sudo apt-get install -y docker-ce
  • 查看docker服务是否启动
代码语言:javascript
复制
systemctl status docker
sudo systemctl start docker(一般都启动了,没启动在执行这个)
安装docker-compose
代码语言:javascript
复制
sudo curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version
镜像

拉取镜像前,咱们设置一下docker加速器

代码语言:javascript
复制
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://5a88fb64.m.daocloud.io

这里使用到的php是7.1版本的,后续在更新一个最新版本的7.3的docker-compose.yml吧。然后mysql用的还是5.7的,刚开始使用了mysql8的,相比于5.7,它的性能高很多,但也会有比较多的坑要过,这里先用5.7简单点吧。

代码语言:javascript
复制
docker pull nginx
docker pull php:7.1-fpm
docker pull mysql:5.7

执行

  • 写docker-compose.yml文件 你可以理解为一个命令脚本文件,这些文件就一键创建docker容器,并设置好各个参数、端口、地址映射、执行linxu命令。你可以参考这个教程学习一下docker-compose常用的使用,就像markdown一样就那几个常用的命令。
  • nginx配置说明:1、项目目录和nginx配置映射出来;2、配置端口和网络配置
  • mysql配置说明:1、mysql数据data映射出来;2、配置端口和网络配置;3、配置 mysql帐号密码
  • php-fpm配置说明:1、使用了dockerfile来构建一个镜像并启动一个容器使用;2、配置端口和网络配置;3、安装需要用到的php扩展到镜像中
  • docker-compose.yml文件
代码语言:javascript
复制
version: "3"
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./code:/code  #创建项目根目录,根据自己的情况来定
      - ./nginx/conf.d:/etc/nginx/conf.d  #可以把ngixn配置映射出来,便于修改
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/logs:/var/log/nginx
    network_mode: "host"
  mysql:
    image: mysql:latest
    container_name: mysql
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - ./mysql/data:/var/lib/mysql:rw #创建 /data/myql 目录
      - ./mysql/logs:/var/lib/mysql-logs:rw  # /logs/mysql 目录
    ports:
      - "3306:3306"
    environment:
      MYSQL_USER: root
      MYSQL_PASSWORD: 123456 
      MYSQL_ROOT_PASSWORD: 123456
    network_mode: "host"
  php:
    build: ./
    container_name: fpm7.1
    ports:
      - "9000:9000"
    working_dir: /code
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - ./code:/code
      - ./php/php.ini:/usr/local/etc/php/php.ini
    network_mode: "host"
  • php镜像的Dockerfile文件
代码语言:javascript
复制
FROM php:7.1-fpm
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libpq-dev \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
&& docker-php-ext-install gd mbstring pdo pdo_mysql pdo_pgsql zip
CMD ["php-fpm"]

fpm、redis、nginx、mysql容器docker-compose启动配置参考

  • fpm
代码语言:javascript
复制
version: "3"
services:
    php-fpm:
        container_name: php-fpm
        image: php:7.3-fpm-alpine
        user: www-data
        network_mode: "host"
        restart: always
        working_dir: /app
        volumes:
          - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
          - /opt/test:/app/test
  • redis
代码语言:javascript
复制
version: "3"
services:
  redis:
    container_name: redis
    image: redis:5-alpine
    user: root
    network_mode: "host"
    volumes:
      - ./database:/data
      - ./redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf
  • nginx
代码语言:javascript
复制
version: "3"
services:
  nginx:
    container_name: nginx
    image: nginx:1.16-alpine
    restart: always
    network_mode: "host"
    environment:
      - "USER=www"
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - /opt/test:/app/test
      - /opt/bll-doc:/app/bll-doc
      - ./conf.d:/etc/nginx/conf.d
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./logs:/var/log/nginx
  • mysql
代码语言:javascript
复制
version: "3"
services:
  mysql:
    container_name: mysql
    image: mysql:8
    #restart: always
    environment:
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: 'middlewarepwd'
    network_mode: "host"
    volumes:
      - ./mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
      - ./database:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的碎碎念 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
    • 安装docker
      • 安装docker-compose
        • 镜像
        • 执行
        • fpm、redis、nginx、mysql容器docker-compose启动配置参考
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档