为了可追溯,我把question提取出来整理成文章,方便自己以后对问题进行追溯。
我之前一直是Docker ToolBox套装做的docker学习环境,后面直接使用compose构建了许多开发环境和单机生产环境,但是出现过很多莫名其妙的问题。
VirtualBox 使用Boot2Docker共享文件夹开发,js修改后尾部出现一串乱码(和nginx容器都没关系)
Docker-compose.yml
version: '3.0'
services:
##基础环境
nginx:
image: nginx:1.13.3
volumes:
- /etc/localtime:/etc/localtime:ro
#网站目录
- ./app:/var/www/html
- ./dockerfiles/nginx/conf.d:/etc/nginx/conf.d:ro
#日志文件
- ./logs/nginx:/var/log/nginx
links:
- "php-fpm:php-fpm"
ports:
- "80:80"
command: nginx -g 'daemon off;'
mysql-db:
image: mysql:5.5
#很重要导入到处数据
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data/mysql:/var/lib/mysql:rw
- ./logs/mysql:/var/lib/mysql-logs:rw
- ./dockerfiles/mysql/conf.d:/etc/mysql/conf.d:ro
environment:
MYSQL_ROOT_PASSWORD: zhaojun
MYSQL_DATABASE: lottery_api_sale
MYSQL_USER: zhaojun
MYSQL_PASSWORD: zhaojun
ports:
- "3306:3306"
deploy:
restart_policy:
condition: any
redis-db:
image: redis
volumes:
- ./data/redis:/data
- /etc/localtime:/etc/localtime:ro
deploy:
restart_policy:
condition: any
php-fpm:
build: ./dockerfiles/php/
restart: always
environment:
TP_APP_DEBUG: 'true'
volumes:
#网站目录
- ./app:/var/www/html:rw
#配置文件
- ./dockerfiles/php/php.ini:/usr/local/etc/php/php.ini:ro
- ./dockerfiles/php/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro
#挂载站点日志
- ./logs/php-fpm:/var/log/php-fpm:rw
depends_on:
- mysql-db
- redis-db
links:
- mysql-db:mysql-db
- redis-db:redis-db
command: php-fpm
##附加扩展安装器
composer:
image: composer:1.4.2
volumes:
- /etc/localtime:/etc/localtime:ro
- ./app:/app:rw
working_dir: /app/webroot
deploy:
restart_policy:
condition: none
command: composer install
bower:
image: digitallyseamless/nodejs-bower-grunt
volumes:
- /etc/localtime:/etc/localtime:ro
- ./app:/app:rw
working_dir: /app/webroot
deploy:
restart_policy:
condition: none
command: bower install
VirtualBox中修改Js后访问
在webroot/public有一个测试文件
第一次访问,没问题
在修改了index.js后访问出现乱码
1.开始以为是nginx原因,换了很多版本测试排除了nginx原因。
2.后面以为是boot2docker原因,又排查了版本,最后切换vBox的一个ubuntu做共享文件夹测试,都是同样一模一样的问题。
3.ubuntu在Vbox中一模样的效果
最后我开始排查虚拟器,在换了vmware后,此问题就消失了,同样使用的是两个这虚拟机的挂载。
所以排查出来的情况就是Virtualbox和Vmware挂载共享文件的不同造成的,就来请假一下他们有什么不同???
(在我修改了我windows下共享目录的文件后,不管是Virtualbox和vmware里面还是两个虚拟器的操作系统里面docker容器里面得文件都是修改了的vim也能看到)
在virtualbox中的ubuntu中直接vim或者phpstorm修改文件,不会出现这个问题,所以最终就是确定了virtual虚拟机共享文件问题。
2017.07.26 我使用同事PC机器遇到同样的问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。