使用docker完成laravel(LNMP)运行环境搭建

基础环境

腾讯云CENTOS7.4镜像

准备docker镜像

mysql:5.7

nginx:latest

php:7.2-fpm

phpmyadmin/phpmyadmin:latest

mysql,nginx,php配置文件

# docker run --name base_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
# docker run --name base_php -d php:7.2-fpm
# docker run --name base_nginx -d nginx:latest
# mkdir /etc/laravel.docker.d
# mkdir /etc/laravel.docker.d/mysql && mkdir /etc/laravel.docker.d/php && mkdir /etc/laravel.docker.d/nginx
# mkdir /var/www/html

将配置文件分别拷贝到对应目录中,注意:php:7.2-fpm的配置文件在容器的/usr/local/etc下,nginx:latest的root路径是/usr/share/nginx/www

生成PHP扩展镜像

# vi Dockerfile
内容:
FROM php:7.2-fpm
RUN apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev && docker-php-source extract && docker-php-source delete && docker-php-ext-config gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-gd && docker-php-ext-install gd && docker-php-ext-install zip && docker-php-ext-install mysqli && docker-php-ext-install pdo_mysql && docker-php-ext-install opcache && cd ~ && php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" && chmod +x composer-setup.php && php composer-setup.php && mv composer.phar /usr/local/bin/composer && chmod +x /usr/local/bin/composer && composer config -g repo.packagist composer https://packagist.phpcomposer.com && apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/*
# docker build -t php-ext:0.1 .

注意:经过试验,用composer容器运行composer会提示很多扩展包不存在的错误,因为不熟悉php镜像的结构和php配置文件,不知道怎么修改,因此将composer直接装入php扩展镜像。

报错的Dockerfile
FROM php:7.2-fpm
RUN apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev && docker-php-source extract && docker-php-source delete && docker-php-ext-install gd && docker-php-ext-install zip && docker-php-ext-install mysqli && docker-php-ext-install pdo_mysql && docker-php-ext-install opcache && curl 'http://pecl.php.net/get/mcrypt-1.0.2.tgz' && pecl install mcrypt-1.0.2.tgz && curl 'http://pecl.php.net/get/memcached-3.1.3.tgz' && pecl install memcached-3.1.3.tgz && curl 'http://pecl.php.net/get/redis-4.2.0.tgz' && pecl install redis-4.2.0.tgz && cd ~ && php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" && chmod +x composer-setup.php && php composer-setup.php && mv composer.phar /usr/local/bin/composer && chmod +x /usr/local/bin/composer && composer config -g repo.packagist composer https://packagist.phpcomposer.com && composer selfupdate && apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/*

运行并连接容器

# docker run --name laravel-mysql -e MYSQL_ROOT_PASSWORD=123456 -v /etc/laravel.docker.d/mysql/etc/mysql:/etc/mysql -v/etc/laravel.docker.d/mysql/var/lib/mysql:/var/lib/mysql -d mysql:5.7
# docker run --name laravel-php -v /var/www/html:/var/www/html -v /etc/laravel.docker.d/php/etc:/usr/local/etc --link laravel-mysql:mysql -d php-ext:0.1
# docker run --name laravel-nginx -v /var/www/html:/usr/share/nginx/html -v /etc/laravel.docker.d/nginx/etc/nginx:/etc/nginx -v /var/log/nginx:/var/log/nginx -p 80:80 --link laravel-php:php -d nginx:latest

建立phpinfo.php并测试

# cd /var/www/html && vi phpinfo.php
内容:
<?php
phpinfo();
?>

启动phpmyadmin镜像

# docker run --name phpmyadmin -p 10080:80 -e PMA_ARBITRARY=1 -d phpmyadmin/phpmyadmin:latest

生成laravel项目

# cd /var/www/html
# composer create-project laravel:laravel 项目名

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注