1.先想好你要安装的软件协同支持版本。考虑好你服务器性能,择优选取软件版本
注意:
- mysql最新版本对内存要求较高,可能呢本机内存不够用他就一直启动不起来。所以不建议用 mysql:latest来获取最新版本安装 最好知道自己要装什么版本。
- php如果你直接pull下来然后run启动安装,后来他的扩展可能让你很头疼,甚至装不上去。推荐使用Dockfile脚本把自带的几个扩展命令安装上。这里主要用到的是官方提供的 docker-php-ext-configure 和 docker-php-ext-install 快捷脚本,为你以后安装扩展,启动扩展提供很友好很友好的帮助。
1.安装mysql
1 2 3 4 5 6 |
1. -d :后台运行 2. -p :指定端口映射 3. --name :指定新名称 4. -v :将容器目录与宿主机目录做个映射 5. -e : 传入环境变量参数设置root用户密码 docker run -d -p 3307:3306 -it --name mysql -v /data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --restart=always mysql:5.7 |
2.安装redis
1 |
docker run -d -p 6379:6379 --name redis --restart=always redis |
3.安装php
注意:我这里用的是Dockerfile脚本安装的,没有用命令安装,那个命令安装后的扩展真的很难搞定。
保存以下脚本为 Dockerfile 注意D大写
1 2 3 4 5 6 7 8 9 10 11 12 13 |
FROM php:7.1-fpm RUN apt-get update \ #相关依赖必须手动安装 && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng-dev \ # 安装扩展 && docker-php-ext-install -j$(nproc) iconv mcrypt \ # 如果安装的扩展需要自定义配置时 && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
FROM php:7.4-fpm LABEL maintainer="byshooter@qq.com" #Download PHP extensions #ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/ #RUN chmod uga+x /usr/local/bin/install-php-extensions && sync COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/ RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y \ curl \ git \ zip unzip \ && install-php-extensions \ bcmath \ bz2 \ calendar \ exif \ gd \ intl \ ldap \ memcached \ mysqli \ opcache \ pdo_mysql \ pdo_pgsql \ pgsql \ redis \ soap \ xsl \ zip \ sockets \ swoole \ yaf \ memcached \ mongodb \ mcrypt \ iconv \ mbstring RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ && ln -s $(composer config --global home) /root/composer ENV PATH=$PATH:/root/composer/vendor/bin COMPOSER_ALLOW_SUPERUSER=1 |
使用docker build命令来构建
1 2 |
docker build -f [Dockerfile所在位置] -t [镜像新标签名称] . docker build -f /root/Dockerfile -t php7.1-fpm . |
1 |
docker run -d -p 9000:9000 --name php -v /wwwroot:/var/www --restart=always php:7.1-fpm |
4.安装nginx
# –link来链接2个容器互相通信
1 |
docker run -d -p 80:80 --name nginx -v /wwwroot:/var/www --link mysql --link redis --link php --restart=always nginx |
配置nginx访问
#nginx配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
server { listen 80; server_name localhost; location / { root /var/www/; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { root /var/www/; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
复制这段配置文件保存为default.conf
#然后复制到nginx配置目录下
1 2 3 |
docker cp default nginx:/etc/nginx/conf.d/ #重启nginx容器 docker restart nginx |
在/wwwroot 目录下写入phpinfo()文件来查看是否安装成功
php扩展安装配置请看另一篇
完
- 本文固定链接: https://www.yoyoask.com/?p=80
- 转载请注明: shooter 于 SHOOTER 发表