Last active
November 27, 2015 14:31
-
-
Save 1000k/4fea8975d1db831b268e to your computer and use it in GitHub Desktop.
Build Rails environment from Ruby language stack. Tested in Windows 10 & Vagrant 1.7.4.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Size of the CoreOS cluster created by Vagrant | |
$num_instances=1 | |
# Used to fetch a new discovery token for a cluster of size $num_instances | |
$new_discovery_url="https://discovery.etcd.io/new?size=#{$num_instances}" | |
# Automatically replace the discovery token on 'vagrant up' | |
if File.exists?('user-data') && ARGV[0].eql?('up') | |
require 'open-uri' | |
require 'yaml' | |
token = open($new_discovery_url).read | |
data = YAML.load(IO.readlines('user-data')[1..-1].join) | |
if data.key? 'coreos' and data['coreos'].key? 'etcd' | |
data['coreos']['etcd']['discovery'] = token | |
end | |
if data.key? 'coreos' and data['coreos'].key? 'etcd2' | |
data['coreos']['etcd2']['discovery'] = token | |
end | |
# Fix for YAML.load() converting reboot-strategy from 'off' to `false` | |
if data.key? 'coreos' and data['coreos'].key? 'update' and data['coreos']['update'].key? 'reboot-strategy' | |
if data['coreos']['update']['reboot-strategy'] == false | |
data['coreos']['update']['reboot-strategy'] = 'off' | |
end | |
end | |
yaml = YAML.dump(data) | |
File.open('user-data', 'w') { |file| file.write("#cloud-config\n\n#{yaml}") } | |
end | |
# | |
# coreos-vagrant is configured through a series of configuration | |
# options (global ruby variables) which are detailed below. To modify | |
# these options, first copy this file to "config.rb". Then simply | |
# uncomment the necessary lines, leaving the $, and replace everything | |
# after the equals sign.. | |
# Change basename of the VM | |
# The default value is "core", which results in VMs named starting with | |
# "core-01" through to "core-${num_instances}". | |
#$instance_name_prefix="core" | |
# Change the version of CoreOS to be installed | |
# To deploy a specific version, simply set $image_version accordingly. | |
# For example, to deploy version 709.0.0, set $image_version="709.0.0". | |
# The default value is "current", which points to the current version | |
# of the selected channel | |
#$image_version = "current" | |
# Official CoreOS channel from which updates should be downloaded | |
$update_channel='stable' | |
# Log the serial consoles of CoreOS VMs to log/ | |
# Enable by setting value to true, disable with false | |
# WARNING: Serial logging is known to result in extremely high CPU usage with | |
# VirtualBox, so should only be used in debugging situations | |
#$enable_serial_logging=false | |
# Enable port forwarding of Docker TCP socket | |
# Set to the TCP port you want exposed on the *host* machine, default is 2375 | |
# If 2375 is used, Vagrant will auto-increment (e.g. in the case of $num_instances > 1) | |
# You can then use the docker tool locally by setting the following env var: | |
# export DOCKER_HOST='tcp://127.0.0.1:2375' | |
#$expose_docker_tcp=2375 | |
# Enable NFS sharing of your home directory ($HOME) to CoreOS | |
# It will be mounted at the same path in the VM as on the host. | |
# Example: /Users/foobar -> /Users/foobar | |
#$share_home=false | |
# Customize VMs | |
#$vm_gui = false | |
#$vm_memory = 1024 | |
#$vm_cpus = 1 | |
# Share additional folders to the CoreOS VMs | |
# For example, | |
# $shared_folders = {'/path/on/host' => '/path/on/guest', '/home/foo/app' => '/app'} | |
# or, to map host folders to guest folders of the same name, | |
# $shared_folders = Hash[*['/home/foo/app1', '/home/foo/app2'].map{|d| [d, d]}.flatten] | |
$shared_folders = {'C:/Users/1000k/app' => '/app'} | |
# Enable port forwarding from guest(s) to host machine, syntax is: { 80 => 8080 }, auto correction is enabled by default. | |
$forwarded_ports = {80 => 80} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ref: [railsをdockerで動かしたい場合の構成はどうするべきか - Qiita](http://qiita.com/k-shogo/items/592e243f9763d0c3b10a) | |
FROM ruby:latest | |
RUN apt-get update && apt-get install -y \ | |
build-essential \ | |
curl \ | |
git \ | |
zlib1g-dev \ | |
libssh-dev \ | |
libssl-dev \ | |
libreadline-dev \ | |
libyaml-dev \ | |
libxml2-dev \ | |
libxslt-dev \ | |
libsqlite3-dev \ | |
sqlite3 \ | |
software-properties-common | |
# install Node.js | |
RUN add-apt-repository -y ppa:chris-lea/node.js \ | |
&& echo "deb http://archive.ubuntu.com/ubuntu precise universe" >> /etc/apt/sources.list | |
RUN apt-get install -y nodejs | |
# install Rails | |
RUN gem install nokogiri -- --use-system-libraries # to avoid "No such file or directory - getcwd" error | |
RUN gem install --no-rdoc --no-ri rails | |
RUN rails -v | |
EXPOSE 80 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
git clone https://github.com/coreos/coreos-vagrant.git | |
cd coreos-vagrant | |
mv config.rb.sample config.rb | |
vi config.rb | |
# Edit config.rb as above | |
vagrant up |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment