700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > window10本地docker-compose构建nginx+PHP+mysql环境

window10本地docker-compose构建nginx+PHP+mysql环境

时间:2018-11-04 16:15:08

相关推荐

window10本地docker-compose构建nginx+PHP+mysql环境

为什么用docker,想象一下你换了电脑或者服务器,或者新人接触你的项目,一个docker打包新电脑丢上去,还跟原版环境相同,它不快乐?,所谓工欲善其事必先利其器。

如果从安装Docker Desktop学起,请先读本文下面学习docker彩踩过的坑

创建目录docker,其下目录结构

运行docker-composer up -d,等待执行成功后,本地访问127.0.0.1访问www根目录

访问,需在在本地host文件添加,127.0.0.1

docker-compose.yml

version: '3'networks:service-net:driver: bridgeservices:yyl-nginx:container_name: yyl-nginxbuild: ./nginxports:- 88:88- 80:80- 443:443volumes:- ./www:/usr/share/nginx/html- ./nginx/nginx.conf:/etc/nginx/nginx.conf- ./nginx/conf.d:/etc/nginx/conf.d- ./nginx/logs:/var/log/nginxdepends_on:- yyl-phprestart: alwaysnetworks:- service-netyyl-php:container_name: yyl-phpbuild: ./phpdepends_on:- yyl-redis- yyl-mysqlvolumes:- ./www:/usr/share/nginx/html- ./php/php.ini:/usr/local/etc/php/php.ini- ./php/logs:/usr/local/var/logrestart: alwaysnetworks:- service-netyyl-redis:image: redis:6.0.1ports:- 6379:6379container_name: yyl-redisrestart: alwaysnetworks:- service-netyyl-mysql:image: mysql:5.7.16container_name: yyl-mysqlports:- 3306:3306restart: alwaysvolumes:- ./mysql/conf/f:/etc/fenvironment:- "MYSQL_ROOT_PASSWORD=123456"- "TZ=Asia/Shanghai"networks:- service-net

文件f

[mysqld]user=mysqldefault-storage-engine=INNODB#character-set-server=utf8character-set-client-handshake=FALSEcharacter-set-server=utf8mb4collation-server=utf8mb4_unicode_ciinit_connect='SET NAMES utf8mb4'[client]#utf8mb4字符集可以存储emoji表情字符#default-character-set=utf8default-character-set=utf8mb4[mysql]#default-character-set=utf8default-character-set=utf8mb4

文件nginx文件夹下Dockerfile

FROM nginx:1.16.1# set timezomeENV TZ=Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

文件nginx文件夹下bbb.conf

server {listen 80;server_name "";index index.html index.htm index.php;root /usr/share/nginx/html/;error_page 500 502 503 504 /50x.html;if (!-e $request_filename){rewrite ^/(.*)$ /index.php?s=/$1 last;}location = /50x.html {root /usr/share/nginx/html;}location ~ \.php$ {fastcgi_pass yyl-php:9000; #容器名:端口fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}access_log /var/log/nginx/.log main;}

文件nginx文件夹下

server {listen 80;server_name "";index index.html index.htm index.php;root /usr/share/nginx/html/;error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}if (!-e $request_filename){rewrite ^/(.*) /index.php last;}location ~ \.php$ {fastcgi_pass yyl-php:9000; #容器名:端口fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}access_log /var/log/nginx/default.log main;}

nginx.conf

user nginx;worker_processes auto;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events {worker_connections 1024;}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopushon;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;}

php文件夹下Dockerfile文件

FROM php:7.2-fpm# 设置时区ENV TZ=Asia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 更新安装依赖包和PHP核心拓展RUN apt-get update && apt-get install -y \--no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev curl libzip-dev \&& rm -r /var/lib/apt/lists/* \&& docker-php-ext-configure gd \&& docker-php-ext-install -j$(nproc) gd bcmath opcache pdo_mysql gettext sockets zip mysqli dba pcntl calendar shmop exif sysvmsg sysvsem sysvshm # 安装 PECL 拓展,安装Redis,swooleRUN pecl install redis \&& pecl install swoole \&& docker-php-ext-enable redis swoole# 安装 ComposerENV COMPOSER_HOME /root/composerRUN curl -sS /installer | php -- --install-dir=/usr/local/bin --filename=composerENV PATH $COMPOSER_HOME/vendor/bin:$PATHWORKDIR /data

下index.php

<?php echo phpinfo();

www下index.php

<?php echo 'bbb';

在学习docker过程中踩过的坑:

windows环境下,下载的Docker Desktop 会发现无法运行,解决办法分别为,开启虚拟化(请自行百度),下载低版本的docker,我这里的docker版本为2.3.0.2挂载问题, 挂载失败,去setting里添加挂载盘,截图如下 单纯的拉取PHP官方镜像,运行后无法连接数据库,各种扩展没有,在docker的PHP容器内是无法找到php.ini文件的,安装扩展和开启扩展是单独有docker-php-ext-install等一系列docker-php-ext命令有,请自行百度docker安装PHP扩展

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。