Skip to content

Instantly share code, notes, and snippets.

@1000k
Last active November 27, 2015 14:31
Show Gist options
  • Save 1000k/4fea8975d1db831b268e to your computer and use it in GitHub Desktop.
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.
# 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}
# 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
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