docker-composer
一个用于自用的,搭建php运行环境的docker-compose文件及目录结构
关于基础镜像选择
基础镜像一般有两个选择
alpine:3
debain:buster-slim
镜像
大小(压缩过)
大小(未压缩)
描述
alpine:3
2-3M
5M左右
最小的基础镜像,对镜像大小有严格要求的,可以用这个
debain:buster-slim
20-27M
70M左右
debain镜像的瘦身版,去除了各种不必要的软件
上面的大小,前一个是压缩过的大小,后一个是未压缩过的大小,具体以即时镜像大小为准
使用过程中,根据需求自行决定用那个基础镜像
容器如何访问主机
window/mac下,使用docker for window/mac,可以在容器中直接使用host.docker.internal,通过这个host即可访问主机
linux下,暂时还没有host.docker.internal,但是通过docker-compose.yml创建的容器之间,可以通过服务名进行连接。
就像此项目中,nginx的默认配置文件nginx\conf.d\server.conf中就是通过php:9000来访问php容器的。同理,php代码在php容器解析运行时,可以通过db来访问mysql容器。
服务名可自定义,就是docker-composer.yml文件中的web、php、db、redis等
每个分支对应一种运行环境与目录结构,如master分支就是以以下软件组成
Nginx 1.16
PHP 7.3-fpm
Mysql 8.0
使用例子
第一次使用,在docker-compose.yml文件同级目录下执行以下命令
docker-compose up -d
把项目放到www目录就可以访问此项目了,像安装了个LAMP一样
之后,关闭容器,使用
docker-compose stop
开启容器,使用
docker-compose start
关闭并删除这几个docker容器,使用
docker-compose down
docker-compose的其他命令请查看其官方文档
mysql8.0连接失败(1045错误)
MySQL8.0开始使用caching_sha2_passoword加密方式
使用以下命令,修改加密方式为mysql_native_password
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
或者,直接在配置文件里面加入以下内容,容器初始化的时候,就会使用老的加密方式了
default-authentication-plugin=mysql_native_password
其实大部分的配置文件以及容器产生的数据,我都不想放到容器外面来,可是由于修改配置文件太麻烦了,所以,我把可能会经常修改的软件的配置文件如nginx的,"提取"出来。至于数据库数据,还是放在外面吧,万一哪一天容器出问题了。。。。。。