Move everything to a complete base image
authorRafael dos Santos Silva <xfalcox@gmail.com>
Tue, 31 Jan 2017 15:21:00 +0000 (13:21 -0200)
committerRafael dos Santos Silva <xfalcox@gmail.com>
Tue, 31 Jan 2017 15:21:00 +0000 (13:21 -0200)
image/auto_build.rb [new file with mode: 0644]
image/base/Dockerfile
image/discourse/Dockerfile [deleted file]
image/discourse_dev/Dockerfile
image/discourse_test/Dockerfile

diff --git a/image/auto_build.rb b/image/auto_build.rb
new file mode 100644 (file)
index 0000000..c7d0d68
--- /dev/null
@@ -0,0 +1,60 @@
+# simple build file to be used locally by Sam
+#
+require 'pty'
+require 'optparse'
+
+def run(command)
+  lines = []
+  PTY.spawn(command) do |stdin, stdout, pid|
+    begin
+      stdin.each do |line|
+        lines << line
+        puts line
+      end
+    rescue Errno::EIO
+      # we are done
+    end
+  end
+
+  lines
+end
+
+def build(image)
+  sucess = false
+  lines = run("cd #{image[:name]} && docker build . --tag #{image[:tag]} #{image[:squash] ? '--squash' : ''}")
+  sucess = true if lines[-1] =~ 'successfully built'
+end
+
+def dev_deps()
+  run("sed -e 's/\(db_name: discourse\)/\1_development/' ../templates/postgres.template.yml > discourse_dev/postgres.template.yml")
+  run("cp ../templates/redis.template.yml discourse_dev/redis.template.yml")
+end
+
+options = {}
+OptionParser.new do |parser|
+  parser.on("-i", "--image image",
+            "Build the image. No parameter means [base discourse discourse_test].") do |i|
+    options[:image] = [i.to_sym]
+  end
+end.parse!
+
+DEFAULT_IMAGES = [:base, :discourse, :discourse_test, :discourse_dev, :discourse_bench]
+
+todo = options[:image] || DEFAULT_IMAGES
+version = 'release'
+
+images = {
+  base: { name: 'base', tag: "discourse/base:#{version}", squash: true },
+  discourse_test: { name: 'discourse_test', tag: "discourse/discourse_test:#{version}", squash: false},
+  discourse_dev: { name: 'discourse_dev', tag: "discourse/discourse_dev:#{version}", squash: false }
+}
+
+todo.each do |image|
+  puts images[image]
+  bump(images[image][:name], options[:version]) if options[:version]
+
+  dev_deps() if image == :discourse_dev
+  run "(cd base && ./download_phantomjs)" if image == :base
+
+  build(images[image])
+end
index a8d9fe740a7a952843c8bafde6a3d3a5c43df7be..74d1614a73d00d838ba6d0b8b4c7a01ec317e973 100644 (file)
@@ -1,5 +1,5 @@
 # NAME:     discourse/base
-# VERSION:  1.3.10
+# VERSION:  build
 FROM ubuntu:16.04
 
 ENV PG_MAJOR 9.5
@@ -128,3 +128,17 @@ ADD boot /sbin/boot
 ADD cron /etc/service/cron/run
 ADD rsyslog /etc/service/rsyslog/run
 ADD cron.d_anacron /etc/cron.d/anacron
+
+
+# Discourse specific bits
+RUN useradd discourse -s /bin/bash -m -U &&\
+    mkdir -p /var/www &&\
+    cd /var/www &&\
+    git clone https://github.com/discourse/discourse.git &&\
+    cd discourse &&\
+    git remote set-branches --add origin tests-passed &&\
+    chown -R discourse:discourse /var/www/discourse &&\
+    cd /var/www/discourse &&\
+    sudo -u discourse bundle install --deployment \
+         --without test --without development &&\
+    find /var/www/discourse/vendor/bundle -name tmp -type d -exec rm -rf {} +
diff --git a/image/discourse/Dockerfile b/image/discourse/Dockerfile
deleted file mode 100644 (file)
index 898b6a9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# NAME:     discourse/discourse
-# VERSION:  1.3.10
-FROM discourse/base:1.3.10
-
-MAINTAINER Sam Saffron "https://twitter.com/samsaffron"
-
-# Discourse specific bits
-RUN useradd discourse -s /bin/bash -m -U &&\
-    mkdir -p /var/www &&\
-    cd /var/www &&\
-    git clone https://github.com/discourse/discourse.git &&\
-    cd discourse &&\
-    git remote set-branches --add origin tests-passed &&\
-    chown -R discourse:discourse /var/www/discourse &&\
-    cd /var/www/discourse &&\
-    sudo -u discourse bundle install --deployment \
-         --without test --without development &&\
-    find /var/www/discourse/vendor/bundle -name tmp -type d -exec rm -rf {} +
index 99d2122536348f806bf0ecc63f3f8a3a129a076e..d9a1184b0f93ff95636600b4fb6a07f51124e989 100644 (file)
@@ -1,6 +1,6 @@
 # NAME:     discourse/discourse_dev
-# VERSION:  1.3.10
-FROM discourse/base:1.3.10
+# VERSION:  build
+FROM discourse/base:release
 
 MAINTAINER Sam Saffron "https://twitter.com/samsaffron"
 
@@ -8,10 +8,8 @@ MAINTAINER Sam Saffron "https://twitter.com/samsaffron"
 RUN apt-get update && apt-get install -y libsqlite3-dev \
     && gem install mailcatcher && rm -rf /var/lib/apt/lists/*
 
-# Create discourse user and /var/www location for both
-# discourse and dev images.
-RUN useradd discourse -s /bin/bash -m -U &&\
-    mkdir -p /var/www
+# Remove the code added on base image
+RUN rm -rf /var/www/*
 
 # Give discourse user no-passwd sudo permissions (for bundle install)
 ADD sudoers.discourse /etc/sudoers.d/discourse
index e709573057a2fdf7494528cc6a1953c6333f6e6d..179273632222d5cdc13645abd8c9e9d6b351088f 100644 (file)
@@ -1,6 +1,6 @@
 # NAME:     discourse/discourse_test
-# VERSION:  1.3.10
-FROM discourse/discourse:1.3.10
+# VERSION:  build
+FROM discourse/base:release
 
 MAINTAINER Sam Saffron "https://twitter.com/samsaffron"