From c2053d532277eb00b1db074bebd203af12e0136e Mon Sep 17 00:00:00 2001 From: Michael Hobbs Date: Fri, 3 Apr 2015 12:13:39 -0700 Subject: [PATCH] support dockerfiles without expose command. closes #1083 --- plugins/00_dokku-standard/commands | 2 +- tests.mk | 5 ++++ tests/apps/dockerfile-noexpose/CHECKS | 1 + tests/apps/dockerfile-noexpose/Dockerfile | 13 +++++++++ tests/apps/dockerfile-noexpose/check_deploy | 2 ++ tests/apps/dockerfile-noexpose/index.js | 13 +++++++++ tests/apps/dockerfile-noexpose/package.json | 29 +++++++++++++++++++++ 7 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 tests/apps/dockerfile-noexpose/CHECKS create mode 100644 tests/apps/dockerfile-noexpose/Dockerfile create mode 100755 tests/apps/dockerfile-noexpose/check_deploy create mode 100644 tests/apps/dockerfile-noexpose/index.js create mode 100644 tests/apps/dockerfile-noexpose/package.json diff --git a/plugins/00_dokku-standard/commands b/plugins/00_dokku-standard/commands index 6f8ca6642..6fec1ff02 100755 --- a/plugins/00_dokku-standard/commands +++ b/plugins/00_dokku-standard/commands @@ -35,7 +35,7 @@ case "$1" in dockerfile) # extract first port from Dockerfile - DOCKERFILE_PORT=$(grep EXPOSE Dockerfile | head -1 | awk '{ print $2 }') + DOCKERFILE_PORT=$(grep EXPOSE Dockerfile | head -1 | awk '{ print $2 }' || true) [[ -n "$DOCKERFILE_PORT" ]] && dokku config:set-norestart $APP DOKKU_DOCKERFILE_PORT=$DOCKERFILE_PORT # sticking with same pattern of building app image before pre-build for now. diff --git a/tests.mk b/tests.mk index a1d7e62b3..5c1931e54 100644 --- a/tests.mk +++ b/tests.mk @@ -75,6 +75,10 @@ deploy-test-dockerfile: @echo deploying dockerfile app... cd tests && ./test_deploy ./apps/dockerfile dokku.me +deploy-test-dockerfile-noexpose: + @echo deploying dockerfile-noexpose app... + cd tests && ./test_deploy ./apps/dockerfile-noexpose dokku.me + deploy-test-gitsubmodules: @echo deploying gitsubmodules app... cd tests && ./test_deploy ./apps/gitsubmodules dokku.me @@ -125,6 +129,7 @@ deploy-tests: @$(QUIET) $(MAKE) deploy-test-config @$(QUIET) $(MAKE) deploy-test-clojure @$(QUIET) $(MAKE) deploy-test-dockerfile + @$(QUIET) $(MAKE) deploy-test-dockerfile-noexpose @$(QUIET) $(MAKE) deploy-test-gitsubmodules @$(QUIET) $(MAKE) deploy-test-go @$(QUIET) $(MAKE) deploy-test-java diff --git a/tests/apps/dockerfile-noexpose/CHECKS b/tests/apps/dockerfile-noexpose/CHECKS new file mode 100644 index 000000000..6439da05f --- /dev/null +++ b/tests/apps/dockerfile-noexpose/CHECKS @@ -0,0 +1 @@ +/ Hello World! diff --git a/tests/apps/dockerfile-noexpose/Dockerfile b/tests/apps/dockerfile-noexpose/Dockerfile new file mode 100644 index 000000000..2580af6d3 --- /dev/null +++ b/tests/apps/dockerfile-noexpose/Dockerfile @@ -0,0 +1,13 @@ +FROM ubuntu:trusty +ENV LC_ALL C +ENV DEBIAN_FRONTEND noninteractive +ENV DEBCONF_NONINTERACTIVE_SEEN true + +RUN apt-get install -y software-properties-common && add-apt-repository ppa:chris-lea/node.js && apt-get update +RUN apt-get install -y build-essential curl postgresql-client-9.3 nodejs git + +COPY . /app +WORKDIR /app +RUN npm install + +CMD npm start diff --git a/tests/apps/dockerfile-noexpose/check_deploy b/tests/apps/dockerfile-noexpose/check_deploy new file mode 100755 index 000000000..63a809e1f --- /dev/null +++ b/tests/apps/dockerfile-noexpose/check_deploy @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -e; output="$(curl -s -S $1)"; echo $output; test "$output" == "Hello World!" diff --git a/tests/apps/dockerfile-noexpose/index.js b/tests/apps/dockerfile-noexpose/index.js new file mode 100644 index 000000000..90221112f --- /dev/null +++ b/tests/apps/dockerfile-noexpose/index.js @@ -0,0 +1,13 @@ +var express = require('express') +var app = express(); + +app.set('port', (process.env.PORT || 5000)) +app.use(express.static(__dirname + '/public')) + +app.get('/', function(request, response) { + response.send('Hello World!') +}) + +app.listen(app.get('port'), function() { + console.log("Node app is running at localhost:" + app.get('port')) +}) diff --git a/tests/apps/dockerfile-noexpose/package.json b/tests/apps/dockerfile-noexpose/package.json new file mode 100644 index 000000000..29e7c9f3e --- /dev/null +++ b/tests/apps/dockerfile-noexpose/package.json @@ -0,0 +1,29 @@ +{ + "name": "node-js-sample", + "version": "0.1.0", + "description": "A sample Node.js app using Express 4", + "main": "index.js", + "scripts": { + "start": "node index.js" + }, + "dependencies": { + "express": "^4.0.0" + }, + "engines": { + "node": "0.10.x" + }, + "repository": { + "type": "git", + "url": "https://github.com/heroku/node-js-sample" + }, + "keywords": [ + "node", + "heroku", + "express" + ], + "author": "Mark Pundsack", + "contributors": [ + "Zeke Sikelianos (http://zeke.sikelianos.com)" + ], + "license": "MIT" +}