用docker搭建php开发环境(3)

阅读更多
docker搭建php系列文章
用docker搭建php开发环境
用docker搭建php开发环境(2)
用docker搭建php开发环境(3)

上一篇文章中,提到了使用docker过程中可能遇到的坑。

这次解释一下。

在win10家庭版中,这个坑是最大的。

因为,win7没有win10这么复杂的文件权限。
而 win10 专业版 自带 docker环境。

只有win10 home即家庭版,文件夹权限复杂,又没有专用的docker环境。

目前,我实际遇到的问题是mysql,其实真实原因是mysql5.7对文件权限要求高,linux下能满足,windows下讨厌,而别的软件没数据库这么讲究。
另外3个,nginx,php,redis貌似没有问题。

怎么解决mysql5.7在win10 家庭版中的docker?

其实就是解决两个问题,1配置文件,2数据文件。
经检测,mysql的日志文件对文件权限没啥要求。
配置文件,它无法读取共享文件夹的内容,因为无法设置644权限(win10权限复杂)。
解决方案是dockerfile文件中,使用copy命令 拷贝到 /etc/mysql/conf.d这个目录下。
就算搞定了!!再设置644,因为在镜像里,所以必定成功。
该目录下还有docker.cnf,如果愿意,可以写个空文件拷贝过去。

类似以下脚本,需要预先在D:\docker_study\zphal\files\mysql下,放两个自己写的配置文件。

COPY ./mysql-file.cnf /etc/mysql/conf.d/mysql-file.cnf
COPY ./docker.cnf /etc/mysql/conf.d/docker.cnf
RUN chmod 644 /etc/mysql/conf.d/docker.cnf \
    && chmod 644 /etc/mysql/conf.d/mysql-file.cnf


数据文件怎么办?谷哥后得知
  mysql-db:
      build: ./mysql
      ports:
        - "3306:3306"
      volumes:
        - ../data/mysql:/var/lib/mysql:rw
        - ../logs/mysql:/var/lib/mysql-logs:rw
      environment:
        MYSQL_ROOT_PASSWORD: 123456
        MYSQL_DATABASE: zphaldb
        MYSQL_USER: zphal
        MYSQL_PASSWORD: zphal123
      restart: always
      command: "--character-set-server=utf8  --explicit_defaults_for_timestamp  --innodb-flush-method=O_DSYNC --innodb-use-native-aio=0 "


最后那两个innodb的命令,其实是让mysql放宽权限的参数。使用即可搞定。

同理,假设不使用docker-compose,直接用命令启动mysql容器也一样,把那两个命令加上即可。

最后,本文关于mysql,这么搞的目的都是希望mysql的数据能够单独保留在容器外。假设不在乎这个,数据依然在容器内,那么完全不需要这么麻烦,直接启动容器即可。






你可能感兴趣的:(php,docker,win10)