maxoyed

docker配置lnmp环境
本文将介绍如何利用docker搭建php网站的基础环境,包括nginx,php,mysql,你也可以在此基础上安装...
扫描右侧二维码阅读全文
28
2018/02

docker配置lnmp环境

本文将介绍如何利用docker搭建php网站的基础环境,包括nginx,php,mysql,你也可以在此基础上安装phpMyAdmin来管理mysql。所有操作均在deepin 15.5 64位桌面版测试通过。

1.基础环境

Linux主机一台

2.Docker安装及配置

2.1.安装Docker

Docker的安装比较简单,参考官方文档的安装方式即可。

2.2.安装Docker Compose

Docker Compose是定义和运行多容器Docker应用程序的工具。Docker Compose的安装也比较简单,参考官方文档安装即可,国内可替换为daocloud镜像源以加速下载。

2.3.加速你的docker

由于众所周知的原因,docker官方镜像的访问速度非常慢,幸运的是,国内很多服务商提供了docker hub加速服务,可采用DaoCloud提供的加速器,官方网址:https://www.daocloud.io/mirror#accelerator-doc

3.制作docker-compose文件

采用phpdocker.io提供的Generator可以非常方便的生成php基础环境的docker-compose文件。打开phpdocker Generator,根据自己的需要填写信息,或者参考我以下的配置,配置lnmp的基础环境:
Global configuration:

  • Project name:test(这里填写你的网站)
  • Base port:8000(web服务器默认端口)

PHP configuration:

  • PHP Version:7.2.x(根据自己的需要选择php版本)
  • Extensions:MySQL(php扩展,按需勾选)

MySQL:

  • Enable MySQL:on(启用MySQL)
  • Version:5.6.x(选择MySQL版本)
  • Password for root user:admin123(MySQL root用户密码)
  • Your app's database name:test(网站数据库名称)
  • Your app's database username:test(网站数据库用户名)
  • Your app's database password:test123(网站数据库密码)

其余选项保持默认,如下图:

然后点页面下方的“Generate project archive”下载配置文件并解压,新建一个public文件夹(这个public就是网站的根目录):

public路径下新建一个index.php文件,并将以下内容写入:

<?php
    echo phpinfo();
?>

在此路径打开终端,输入docker-compose up -d,等容器全部运行后,打开localhost:8000测试一下:

4.安装phpMyAdmin

为了更方便的管理数据库,我们还可以在上文的基础上添加phpMyAdmin。这里我们同样采用docker的方式来安装phpMyAdmin。

用编辑器打开docker-compose.yml

###############################################################################
#                          Generated on phpdocker.io                          #
###############################################################################
version: "3.1"
services:

    mysql:
      image: mysql:5.6
      container_name: test-mysql
      working_dir: /application
      volumes:
        - .:/application
      environment:
        - MYSQL_ROOT_PASSWORD=admin123
        - MYSQL_DATABASE=test
        - MYSQL_USER=test
        - MYSQL_PASSWORD=test123
      ports:
        - "127.0.0.2:3306:3306"

    webserver:
      image: nginx:alpine
      container_name: test-webserver
      working_dir: /application
      volumes:
          - .:/application
          - ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      ports:
       - "127.0.0.2:80:80"

    php-fpm:
      build: phpdocker/php-fpm
      container_name: test-php-fpm
      working_dir: /application
      volumes:
        - .:/application
        - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
    
    phpmyadmin:
      image: phpmyadmin/phpmyadmin
      container_name: test-phpmyadmin
      environment:
        - PMA_HOST=mysql
        - PMA_USER=root
        - PMA_PASSWORD=admin123
      restart: always
      ports:
        - 127.0.0.2:8000:80
      volumes:
        - /sessions
      depends_on:
      - mysql

这里我把nginx的端口映射修改为了127.0.0.2:80,MySQL的端口映射修改为了127.0.0.2:3306,phpMyAdmin的端口映射为127.0.0.2:8000,然后保存,在此路径再次打开终端,先执行docker-compose down停止并删除此网站的所有docker容器(这并不会删除public以及phpdocker目录下的文件),然后再次执行docker-compose up -d,现在打开127.0.0.2:8000127.0.0.2,就可以分别访问phpmyadmin和我们的网站了:

结语:容器化技术可以帮助我们轻松便捷的配置软件开发和生产环境,解决开发机和生产机环境依赖及基础环境等问题,可以将软件和环境一起打包,并且相比传统虚拟机而言十分节省系统资源,详细的介绍请参考:What is docker?

Last modification:October 6th, 2018 at 02:12 am
If you think my article is useful to you, please feel free to appreciate

4 comments

  1. weearc

    东哥我要交换友链~|´・ω・)ノ

  2. BudgetVM优惠码

    朋友 交换链接吗

    1. maxoyed
  3. 胖爷MS

    😂

Leave a Comment