Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

baykier/devbox

Repository files navigation

devbox

devbox 是基于docker的开发环境封装项目,用于简化开发的环境搭建和迁移 如果喜欢欢迎star

如何简化开发环境

对于开发来说,需要用到的工具包,软件包,有可能非常非常多,而且经常出现冲突,docker的出现对于解决这个问题提
供的非常好的途径,并且还能保持系统的干净,清洁。对于单个的开发测试,封装在同一个环境,能有效解决依赖冲突

如何解决容器内外的权限问题

各个容器内的服务,如nginx 或者php-fpm,都是以用户角色运行,如果对于线上环境,我们可以把源码包直接 打入镜像内
部来避免权限问题。但是对于开发环境,还是挂载到容器内部最为实用,这时候,假如开发目录和容器内部运行服务的用户
不一致,就会出现权限问题,为了解决这个问题,我们有两种方法可以解决:
  • gosu root
这种方法就是容器内服务运行时候用[gosu](https://github.com/tianon/gosu)命令启用,只不过这里我们用gosu root启用,
下面以php 5.6 的Dockerfile为例:
 ENV GOSU_VERSION 1.10
 RUN set -x \
 	&& apk add --no-cache --virtual .gosu-deps \
 		 dpkg \
 		 gnupg \
 		 openssl \
 	&& dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" \
 	&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \
 	&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \
 	&& chmod +x /usr/local/bin/gosu \
 # verify that the binary works
 	&& gosu nobody true \
 	&& apk del .gosu-deps
 
 ENTRYPOINT gosu root php-fpm

这样 php-fpm就会以root运行,避免挂载的目录权限不足问题,切记生产环境慎用

  • 修改UID和GID
这种方法,就是容器启动时候将容器内服务的用户UID和GID改成同开发者的主机用户UID和GID一致,来避免权限不足的问题
我们以nginx Dcoekrfile 为例:
 ## 将nginx uid gid 更新为开发环境用户ID
 RUN set -x \
 && usermod -u ${DEVBOX_UID} nginx \
 && groupmod -g ${DEVBOX_GID} nginx

以上里两种方法均可

所需要的依赖环境

  • docker
  • docker-compose
  • git

对于win10之前的可能需要安装vagrant来搭建

整体架构说明

devbox
 |--- bin 可执行命令脚本
 |--- build 各个项目Docker镜像构建目录,可根据需要自行修改,添加
 | |--- nginx Nginx Build目录
 | |--- mongo MogonDb Build目录
 | |--- mysql MysqlDb Build目录
 | |--- php Php Build目录
 |--- conf 容器运行时挂着各项目配置目录 
 |--- data MongoDb 或MysqlDb数据文件
 |--- log 各个容器内部日志文件,例如Nginx 或Php
 |--- plugins 需要用到的一些扩展
 |--- project 项目目录
 |--- .env.example Docker-Compose的环境变量配置文件demo
 |--- .gitignore 
 |--- docker-compose.yml Docker-Compose的配置文件
 |--- README.md
 |--- Vagrantfile.exmaple Vgrantfile 参考Demo文件

如何使用

使用很简单,根据需要,复制docker-compose.yml.example为docker-compose.yml,.env.example为.env,修改.env里面的配置后 执行下面命令:

docker-compose up [-d] <service>

将 devbox/bin 目录链接到~/bin 目录

rm -fr ~/bin && sudo ln -s /pathro/devbox/bin /home/user/bin

这样可以直接用bin目录提供的php和composer命令了

License

MIT License

相关资源

About

docker dev env

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /