Added compose
This commit is contained in:
6
Dockerfile
Executable file
6
Dockerfile
Executable file
@@ -0,0 +1,6 @@
|
||||
FROM node:4.6
|
||||
WORKDIR /app
|
||||
ADD . /app
|
||||
RUN npm install
|
||||
EXPOSE 3000
|
||||
CMD npm start
|
||||
20
docker-compose.yml
Executable file
20
docker-compose.yml
Executable file
@@ -0,0 +1,20 @@
|
||||
web:
|
||||
build: .
|
||||
command: node index-db.js
|
||||
ports:
|
||||
- "3000:3000"
|
||||
links:
|
||||
- db
|
||||
environment:
|
||||
MYSQL_DATABASE: myapp
|
||||
MYSQL_USER: myapp
|
||||
MYSQL_PASSWORD: mysecurepass
|
||||
MYSQL_HOST: db
|
||||
db:
|
||||
image: orchardup/mysql
|
||||
ports:
|
||||
- "3306:3306"
|
||||
environment:
|
||||
MYSQL_DATABASE: myapp
|
||||
MYSQL_USER: myapp
|
||||
MYSQL_PASSWORD: mysecurepass
|
||||
@@ -21,3 +21,5 @@ curl -L "https://github.com/docker/compose/releases/download/1.21.2/docker-compo
|
||||
# install docker-machine
|
||||
curl -L "https://github.com/docker/machine/releases/download/v0.15.0/docker-machine-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-machine && \
|
||||
chmod +x /usr/local/bin/docker-machine
|
||||
|
||||
usermod -G docker vagrant
|
||||
|
||||
35
index-db.js
Executable file
35
index-db.js
Executable file
@@ -0,0 +1,35 @@
|
||||
var express = require('express');
|
||||
var app = express();
|
||||
var mysql = require("mysql");
|
||||
var con = mysql.createConnection({ host: process.env.MYSQL_HOST, user: process.env.MYSQL_USER, password: process.env.MYSQL_PASSWORD, database: process.env.MYSQL_DATABASE});
|
||||
|
||||
// mysql code
|
||||
|
||||
con.connect(function(err){
|
||||
if(err){
|
||||
console.log('Error connecting to db: ', err);
|
||||
return;
|
||||
}
|
||||
console.log('Connection to db established');
|
||||
con.query('CREATE TABLE IF NOT EXISTS visits (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, ts BIGINT)',function(err) {
|
||||
if(err) throw err;
|
||||
});
|
||||
});
|
||||
|
||||
// Request handling
|
||||
app.get('/', function (req, res) {
|
||||
// create table if not exist
|
||||
con.query('INSERT INTO visits (ts) values (?)', Date.now(),function(err, dbRes) {
|
||||
if(err) throw err;
|
||||
res.send('Hello World! You are visitor number '+dbRes.insertId);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// server
|
||||
var server = app.listen(3000, function () {
|
||||
var host = server.address().address;
|
||||
var port = server.address().port;
|
||||
|
||||
console.log('Example app listening at http://%s:%s', host, port);
|
||||
});
|
||||
13
index.js
Executable file
13
index.js
Executable file
@@ -0,0 +1,13 @@
|
||||
var express = require('express');
|
||||
var app = express();
|
||||
|
||||
app.get('/', function (req, res) {
|
||||
res.send('Hello World!');
|
||||
});
|
||||
|
||||
var server = app.listen(3000, function () {
|
||||
var host = server.address().address;
|
||||
var port = server.address().port;
|
||||
|
||||
console.log('Example app listening at http://%s:%s', host, port);
|
||||
});
|
||||
19
misc/Jenkinsfile
vendored
Executable file
19
misc/Jenkinsfile
vendored
Executable file
@@ -0,0 +1,19 @@
|
||||
node {
|
||||
def commit_id
|
||||
stage('Preparation') {
|
||||
checkout scm
|
||||
sh "git rev-parse --short HEAD > .git/commit-id"
|
||||
commit_id = readFile('.git/commit-id').trim()
|
||||
}
|
||||
stage('test') {
|
||||
nodejs(nodeJSInstallationName: 'nodejs') {
|
||||
sh 'npm install --only=dev'
|
||||
sh 'npm test'
|
||||
}
|
||||
}
|
||||
stage('docker build/push') {
|
||||
docker.withRegistry('https://index.docker.io/v1/', 'dockerhub') {
|
||||
def app = docker.build("wardviaene/docker-nodejs-demo:${commit_id}", '.').push()
|
||||
}
|
||||
}
|
||||
}
|
||||
31
misc/Jenkinsfile.v2
Executable file
31
misc/Jenkinsfile.v2
Executable file
@@ -0,0 +1,31 @@
|
||||
node {
|
||||
def commit_id
|
||||
stage('Preparation') {
|
||||
checkout scm
|
||||
sh "git rev-parse --short HEAD > .git/commit-id"
|
||||
commit_id = readFile('.git/commit-id').trim()
|
||||
}
|
||||
stage('test') {
|
||||
def myTestContainer = docker.image('node:4.6')
|
||||
myTestContainer.pull()
|
||||
myTestContainer.inside {
|
||||
sh 'npm install --only=dev'
|
||||
sh 'npm test'
|
||||
}
|
||||
}
|
||||
stage('test with a DB') {
|
||||
def mysql = docker.image('mysql').run("-e MYSQL_ALLOW_EMPTY_PASSWORD=yes")
|
||||
def myTestContainer = docker.image('node:4.6')
|
||||
myTestContainer.pull()
|
||||
myTestContainer.inside("--link ${mysql.id}:mysql") { // using linking, mysql will be available at host: mysql, port: 3306
|
||||
sh 'npm install --only=dev'
|
||||
sh 'npm test'
|
||||
}
|
||||
mysql.stop()
|
||||
}
|
||||
stage('docker build/push') {
|
||||
docker.withRegistry('https://index.docker.io/v1/', 'dockerhub') {
|
||||
def app = docker.build("wardviaene/docker-nodejs-demo:${commit_id}", '.').push()
|
||||
}
|
||||
}
|
||||
}
|
||||
7
misc/Vagrantfile
vendored
Executable file
7
misc/Vagrantfile
vendored
Executable file
@@ -0,0 +1,7 @@
|
||||
Vagrant.configure(2) do |config|
|
||||
config.vm.define "docker" do |docker|
|
||||
docker.vm.box = "ubuntu/trusty64"
|
||||
docker.vm.network "private_network", ip: "192.168.0.249"
|
||||
docker.vm.hostname = "docker.example.com"
|
||||
end
|
||||
end
|
||||
19
package.json
Executable file
19
package.json
Executable file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "myapp",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "node index.js",
|
||||
"test": "mocha"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^4.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"express": "^4.14.0",
|
||||
"mysql": "^2.10.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha": "^3.4.2"
|
||||
}
|
||||
}
|
||||
8
test/test.js
Executable file
8
test/test.js
Executable file
@@ -0,0 +1,8 @@
|
||||
var assert = require('assert');
|
||||
describe('Array', function() {
|
||||
describe('#indexOf()', function() {
|
||||
it('should return -1 when the value is not present', function() {
|
||||
assert.equal(-1, [1,2,3].indexOf(4));
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user