indatus/assembler
Composer 安装命令:
composer require indatus/assembler
包简介
Easy construction and packaging of docker containers using simple configuration scripts.
README 文档
README
Assembler allows you to easily construct and package docker containers using existing config scripts. Currently you can build containers using saltstack only, but there are plans to add the ability to provision using any configuration management tool such as puppet, chef, and ansible.
Requirements
- Docker
- PHP 5.4+
- Salt
Install
Via Composer
$ composer create-project indatus/assembler
Usage
Assembler uses Robo to run tasks on the command line. This allows Assembler to wrap docker
commands, so you will need to have docker installed wherever you run it. There is a vagrant file in the root
of this repo that will bootstrap ubuntu/trusty64 with docker and php5 which will allow you to run assembler.
Additionally you will need to configure an ssh forward agent by:
vi ~/.ssh/config
then append:
host 172.17.8.150
ForwardAgent yes
then run if you do not already have an id_rsa key:
ssh-add
then just call vagrant up.
If everything goes according to plan, you should be able to start running assembler.
Terminology
This project extends a metaphor from manufacturing to building and deploying applications. Docker containers are stocked, fabricated, loaded, and packaged based on settings specified in a product line.
Product Line
A product line is simply a yaml file specifying the raw goods or base services that your product needs to run.
Consider the following example:
raw_goods: - mysql: - user: root - password: password - php suppliers: - git@github.com:saltstack-formulas/mysql.git - git@github.com:saltstack-formulas/php.git userData: config/provision.sh # optional
The above yaml represents a product line that tells assembler you want a container with mysql that has a root user with a password of password. Additionally it tells assembler where to find those raw goods as suppliers. You will need salt states available for each of the raw goods to be provisioned onto the Docker container.
Stocking
You stock goods by running assembler:stock and specifying a product line to stock example below:
$ robo assembler:stock my_webserver --goods-path=./goods
The above command will find the my_webserver.yml file git clone the raw goods and automatically generate a top.sls file for use by salt
Fabricating
You 'fabricate' containers based on a base image derived from a docker file for example:
$ robo assembler:fabricate /path/to/dockerfile/ mybaseimagename
The above command will build a base image based on the specified docker file.
Loading
You 'load' containers with the raw goods specified in your production line for example:
$ robo assembler:load mybaseimagename /path/to/goods/
The above command will load all of the goods from the specified path. The '/path/to/goods' would be the same path specified by --goods-path in the stock task.
Packaging
You 'package' containers that have been stocked, fabricated, and loaded. For example:
$ robo assembler:package somecontainerid myrepo/name
This will commit the specified containerid into a docker image additionally if you specify the --push flag the package command will actually push the committed image to myrepo/name. To push you will need to specify your username, password, and email for the dockerregistry you are pushing to.
Making
The make command will do everything in one fail swoop. For example:
$ robo assembler:make my_base_product
will stock, fabricate, load, and package your containers
Shipping
The ship command will login to a Docker host server via SSH and pull a Docker image and run the container instance.
robo ship leftyhitchens/mysql:5.2 192.168.1.100 --ports="3306:3306" --remote_command="mysqld_safe" --sudo
The above command will login to the server 192.168.1.100 via SSH and execute the following commands as sudo:
sudo docker pull leftyhitchens/mysql:5.2
sudo docker run -d --name leftyhitchens_mysql_5.2_<unit_timestamp> -p 3306:3306 mysqld_safe
Provisioning
Configuration
You can specify which cloud provider assembler needs to ship the container to via the provisioning.yaml
file. You will keep your public api token for individual providers here, along with any default ssh keys you
like to be installed on the newly provisioned box. There is an example file in the config directory here,
or you can look at the example below.
provider: digitalocean tokens: digitalocean: yoursuperlongapitoken111 ssh: keys: - 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 userData: config/provision.sh # optional
userData key provides a path to a DigitalOcean cloud config
script. This will be executed during your droplet's creation and can be used for provisioning.
Running
You can provision a server on digital ocean using the 'provision' command as below:
robo provision myhostname
The above will use the information in your config file to create a droplet on digital ocean with the specified hostname as 'my_host_name'. A .machine file will be created with the form .machinemyhostname and will contain data about the created machine below is an example
id: 5083234 hostname: myhostname region: nyc3 size: 512mb image: docker backups: false ipv6: false privatenetworking: false
You can destroy the cloud server using the 'destroy' command as below:
robo destroy .machinemyhostname
Where the value .machinemyhostname is the path to the machine file provisioned before
Testing
$ phpunit
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email tbell@indatus.com, mbunch@indatus.com, or jlaswell@indatus.com instead of using the issue tracker.
License
The MIT License (MIT). Please see License File for more information.
indatus/assembler 适用场景与选型建议
indatus/assembler 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 16 次下载、GitHub Stars 达 2, 最近一次更新时间为 2015 年 04 月 27 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「container」 「docker」 「provisioning」 「assembler」 「indatus」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 indatus/assembler 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 indatus/assembler 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 indatus/assembler 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Docker based testing environment for shopware projects.
The Laragoon utility package
Docker compose for Robo Task Runner
A fast and intuitive dependency injection container.
Deployment command
This will help you to generate a provisioning to run your Symfony apps
统计信息
- 总下载量: 16
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 27
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-04-27