用docker搭建php開發環境(3)

docker搭建php系列文章
[url=http://xieye.iteye.com/blog/2425200]用docker搭建php開發環境[/url]
[url=http://xieye.iteye.com/blog/2425211]用docker搭建php開發環境(2)[/url]
[url=http://xieye.iteye.com/blog/2425372]用docker搭建php開發環境(3)[/url]

上一篇文章中,提到了使用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的數據能夠單獨保留在容器外。假設不在乎這個,數據依然在容器內,那麼完全不需要這麼麻煩,直接啓動容器即可。
發佈了312 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章