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
|
# 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 && \
|
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
|
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