关键词:
Vagrant
===
使用情境:多人共同維護同一產品,在虛擬機啟動後可立即進行開發。
預期結果:使用 Vagrantfile 執行 shell 腳本,將所需套件及服務裝載完成後並啟動,同時將資料匯入現有資料庫,讓使用者下完 vagrant up 之後便可透過連結特定位址使用該產品,此外亦可透過 NFS 掛載至本機的資料夾進行開發維護。
```
vagrant box add ubuntu <box-file-name>.box
```
在第一次下 vagrant up 的時候會自動下載 box file,但可能會碰到下載速度很慢的情況,此時可以透過 browser 其他較快的方式將檔案下載下來之後,只需透過上述指令即可安裝至本機。(此處以 ubuntu 為例)
> Ref:
>
> * [Vagrant Mirrors](http://mirrors.hypo.cn/ubuntu-vagrant/)
> * [Vagrant - Mac OSX Setup Guide](http://sourabhbajaj.com/mac-setup/Vagrant/README.html)
> * [Steps to create a Vagrant Base Box with Ubuntu 14.04 Desktop (GUI) and VirtualBox](http://aruizca.com/steps-to-create-a-vagrant-base-box-with-ubuntu-14-04-desktop-gui-and-virtualbox/)
**Forward SSH Key**
By forwarding ssh public key throught ssh agent,that will allow user access private repo inside VM.
```
eval `ssh-agent`
ssh-add ~/.ssh/id_rsa
ssh-add -l
```
Rancher + Docker
===
使用情境:需要快速且大量部署產品,並可實作各服務的負載平衡。
預期結果:使用 Dockerfile 製作客製化映像並推至 registry,再利用 rancher 連結所有服務,最後透過 load balancer 將外部訪問導引至正確的服務上。
**F2E Dockerfile**
```
FROM nginx
ENV NGINX_PORT=80
ADD index.html /usr/share/nginx/html
ADD dist/ /usr/share/nginx/html
```
**API Dockerfile**
```
FROM node:4.4
EXPOSE 8888
ADD server.js /root
CMD ["node", "/root/server.js"]
```
**Diagram**
```
*.domain.name:80 -> f2e:80
+-----+
+--------> F2E |
| +--+--+
| | service link
| | alias: api
+--+--+ +--+--+
| L B |-----> API |
+-----+ +--+--+
| service link
| alias: db
+--+--+
| D B |
+-----+
*.domain.name:27177 -> db:27017
```
Vagrant.configure(2) do |config|
config.vm.box = 'ubuntu/xenial64'
config.vm.network 'forwarded_port', guest: 3000, host: 3000
config.vm.network 'private_network', ip: '10.10.10.10'
config.vm.provider 'virtualbox' do |vb|
vb.name = 'repo_name'
vb.auto_nat_dns_proxy = false
vb.customize ["modifyvm", :id, "--natdnsproxy1", "off" ]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off" ]
vb.memory = '4096'
end
config.vm.provision 'shell', path: 'install.sh', privileged: false
config.vm.provision 'shell', inline: "\
sudo service redis-server restart
sudo service postgresql restart
cd /vagrant && bundle exec rails s -p 3000 -b '0.0.0.0'
", run: 'always', privileged: false
config.ssh.forward_agent = true
end
#!/bin/bash -x
: '
The following libraries will be needed while installing:
* Ruby: graphicsmagick
* Rails: ruby-dev zlib1g-dev liblzma-dev
* PG: libpq-dev
'
PACKAGES_LIST="
build-essential
curl
vim
git
nodejs
graphicsmagick
ruby-dev
zlib1g-dev
liblzma-dev
libpq-dev
redis-server
postgresql
postgresql-contrib
"
PACKAGES=""
for package in $PACKAGES_LIST
do
PACKAGES="$PACKAGES $package"
done
IS_INSTALLED=.installed
echo "Package Installation Initiated..."
# Install Packages
sudo apt-get update
sudo apt-get install -y $PACKAGES
# Install NVM
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
# Install Node LTS
nvm install --lts
nvm ls
# Request RVM Project Key
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
# Install RVM
curl -sSL https://get.rvm.io | bash -s stable
export PATH="$PATH:/home/ubuntu/.rvm/bin"
source ~/.rvm/scripts/rvm
# Create .ssh folder and know hosts
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
# Grant superuser to current user
sudo -u postgres createuser --superuser $(whoami)
# Install Ruby
rvm install 2.3.1
rvm use 2.3.1 --default
# Install Rails and Bundler
gem install rails bundler
# Install gems, create db and mock data
cd /vagrant && \
bundle install --force && \
bundle exec rake db:create db:migrate db:seed
shdocker别名和函数(代码片段)
查看详情
shdocker:删除所有图像和容器(代码片段)
查看详情
shdocker附加组件机器和组合(代码片段)
查看详情
shdocker:删除所有图像和容器(代码片段)
查看详情
shdocker:删除alle图像和容器(代码片段)
查看详情
shdocker分离,映射端口和名称web(代码片段)
查看详情
shdocker在osx上的配置和使用(代码片段)
查看详情
shdocker片段(代码片段)
查看详情
shdocker帮助(代码片段)
查看详情
shdocker卷(代码片段)
查看详情
shdocker命令(代码片段)
查看详情
shdocker命令(代码片段)
查看详情
shdocker容器(代码片段)
查看详情
shdocker发布(代码片段)
查看详情
shdocker命令(代码片段)
查看详情
shdocker清理(代码片段)
查看详情
shdocker命令(代码片段)
查看详情
shdocker卷(代码片段)
查看详情