1 Star 0 Fork 0

听_风 / zx_docker

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

#目录

#说明

  • 个人练手实践Docker之作,仅供参考
  • 实现Tengine+php-fpm的多容器协作的web应用环境
  • 因为在国内速度太慢,没有放到Docker Hub上,需要先下载依赖镜像然后用Dockerfile进行构建。
  • 成熟以后计划会把镜像的自动构建任务放到DaoCloud上去
  • debian中sources.list使用阿里云了mirror,以便与国内网络环境下更新

#结构图

architecture.jpg

#目录说明

#准备所需依赖镜像 使用DaoCloud提供的加速器先把依赖镜像先下到本地镜像库中,具体使用方式请见DaoCloud官网:http://www.daocloud.io/

$ dao pull debian:jessie
$ dao pull php:5.5.30-fpm
$ dao pull busybox
$ dao pull mysql:5.7.9

另外还有一个michaelzx/debian:jessie镜像需要build,主要用于构建起他镜像。

本项目中的/tengine是From该镜像,如果有需要的话,可以自行扩展。我就是放着备用而已。

$ docker build --rm -t michaelzx/debian:jessie zx_docker_path/debian/.

#构建和运行

这里用到了docker-compose

1、新建一个文件夹/my_path/data,将volume_data中的文件放进去。

2、修改docker-compose.yml中的配置

data_box:
    container_name: data_box
    image: "busybox"
    volumes:
        - ~/workspace/Docker/docker_data:/data
    stdin_open: true

把这里的~/workspace/Docker/docker_data改成你的/my_path/data

mysql_box:
    container_name: mysql_box
    image: "mysql:5.7.9"
    ports:
        - "3306:3306"
    environment:
        - MYSQL_ROOT_PASSWORD=root

这里可以修改你的mysql的root密码

说明:在mac osx下如果要挂在volume可能会出现权限问题,会无法正常启动mysql容器。 解决方法还没找到,有知道的朋友不妨告知一下。

2、build镜像

$ docker-compose build

3、初始化并在后台运行容器

$ docker-compose up -d

#遇到的坑

###【问题一】http://x.x.x.x/index.PHP居然可以被下载 实践环境是在mac os上装了Docker ToolBox,部署完毕以后,发现http://x.x.x.x/index.php可以被正常访问,但是http://x.x.x.x/index.PHP居然可以被下载。理论上index.PHP这个文件应该是不存在的。按照配置,应该是被分配到phpfpm中运行。但为什么又被当成默认文件类型提供了下载?

【分析】进入tengine容器找到网站目录运行一下命令

# cd /data/sites/default/
# cat index.php
<?php phpinfo();?>
# cat index.PHP
<?php phpinfo();?>

可见在此路径下,文件不区分大小写。难道基础镜像有问题?

那到镜像自带的/tmp目录下试试

# cd /tmp
# echo "test">index.php
# ls
# index.php
# cat index.php
# test
# cat index.PHP
# cat: index.PHP: No such file or directory

可见此目录下是区分大小写的。

所以主要是还和/data有关,而/data是挂载上去的volume。

这个volume指向的是max os的本地目录。于是我都mac下的命令行终端试了下,果然不区分大小写。网上找了下资料,其实mac os分区格式有2种:
1、Mac OS 扩展(区分大小写,日志式)
2、Mac OS 扩展(日志式)
我去磁盘工具里面看了下。我的分区格式是第二种。

于是造成了这个问题。

所以通过这点,也再次提醒了我,docker并非一个以往意义上的完全独立的虚拟环境

【解决方案】还没找到,不过正式的服务器环境应该不会有这种问题吧。

###【问题二】OSX下在mysql中挂载volume的话会导致无法启动

如果不挂载volume完全正常,一直解决不了这个问题,非常纠结,有知道的朋友还请指点一下。

#Docker相关命令

##镜像和容器的清理

###删除所有运行中的容器

$ docker kill $(docker ps -q)

###删除所有停止的容器

$ docker rm $(docker ps -a -q)

###删除所有没有tag和挂起的镜像

docker rmi $(docker images -q -f dangling=true)

###删除所有镜像

docker rmi $(docker images -q)

空文件

简介

练手实践项目,仅供参考。实现Tengine+php-fpm多容器协作web应用环境 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zx0211/zx_docker.git
git@gitee.com:zx0211/zx_docker.git
zx0211
zx_docker
zx_docker
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891