软件下载
- php下载:
docker pull php:7.4.8-fpm
- nginx下载:
docker pull nginx
- mysql下载:
docker pull mysql
启动容器,查看配置目录
docker run -itd --name=my-php php:7.4.8-fpm
docker run -itd --name=my-nginx nginx
docker run -itd --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 be0db
容器内配置文件目录介绍
- php配置文件目录:
/usr/local/etc/
- php项目目录:
/var/www/html/
- nginx项目根目录:
/usr/share/nginx/html/
- nginx配置文件目录:
/etc/nginx/
- nginx日志目录:
/var/log/nginx/
- mysql数据文件目录:
/var/lib/mysql/
- mysql配置文件目录:
/etc/mysql/
创建本地宿主机挂载目录
- mkdir -p /data/nginx/{conf,html,logs}
- mkdir -p /data/php/{conf,html}
- mkdir -p /data/mysql/{conf,data}
拷贝容器内配置文件到宿主机
docker cp 容器名:/容器目录/文件名 /宿主机目录/文件名
- 复制php配置到本地:
docker cp aca90:/usr/local/etc /data/php/conf
- 复制nginx配置文件到本地:
docker cp 40be:/etc/nginx /data/nginx/conf
- 复制mysql数据文件到本地
docker cp 580d:/var/lib/mysql /data/mysql/data
- 复制mysql配置文件到本地
docker cp 580d:/etc/mysql /data/mysql/conf
注意: 拷贝容器配置到本地后删除该容器
启动容器
启动mysql
docker run -itd --name=mysql-8 \
-p 3306:3306 \
-v /data/mysql/data/mysql:/var/lib/mysql \
-v /data/mysql/conf/mysql:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:latest
启动php
docker run -itd --name=php7.4.8-fpm \
-v /data/php/conf/etc:/usr/local/etc \
-v /data/nginx/html:/var/www/html \
--link mysql-8:php-mysql8 \
php:7.4.8-fpm
- –name=php7.4.8-fpm 将容器命名为php7.4.8-fpm
- -v /data/nginx/html:/var/www/html 将主机中的目录挂载到容器的/var/www/html目录
注意: php容器连接mysql容器后,PHP连接数据库,不需要用ip了,直接用容器别名或者容器id替代ip,更安全
;
启动nginx
docker run -itd --name=nginx-php7.4.8-fpm \
-p 80:80 \
-v /data/nginx/conf/nginx:/etc/nginx \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
--link php7.4.8-fpm:php748 \
nginx:latest
配置nginx支持php
location ~ \.php$ {
#root html;
fastcgi_pass php748:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
- fastcgi_pass php748:9000; php748是nginx互联php的php容器的别名,如果不这样写,就需要替换成php容器的内网ip,建议用容器互联的别名;
- fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; 其中/var/www/html是php容器中php文件的存储路径;
php配置文件php.ini
- step1: 通过phpinfo()查看配置:
Configuration File (php.ini) Path
:/usr/local/etc/php
- step2: 在容器内
/usr/local/etc/php目录下
有三个文件,其中php.ini-development
等;- step3: 在宿主机对应的目录执行:
mv php.ini-development php.ini
备注
- nginx要支持php-fpm,所以先安装php;
- php需要支持mysql扩展, 需要先安装mysql;
- 容器的创建,一般都要挂载配置文件和数据文件;
- 数据比较重要,所以启动mysql容器需要挂在目录到本地持久化,容器里面数据变化,本地也会变化,这样容器出问题后,只要删除容器,重新挂载一下本地目录就可以了,文件数据不会丢失;
-e MYSQL_ROOT_PASSWORD=123456
启动容器的时候,往里面传参,设置mysql的root密码;- 此时,本地工具连接mysql报错,提示
caching_sha2_password
这是mysql8的一个特点,需要安装一个插件,我们此时需要对mysql密码进行重新设置;- 进入容器中,进入mysql;修改mysql密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'
;
在mysql中修改root密码,任意地址可连接;