Added compose

This commit is contained in:
Guillem Hernandez Sola
2018-06-13 11:35:13 +02:00
parent 3b4d6dc3e0
commit 80460ccdc9
10 changed files with 160 additions and 0 deletions

6
Dockerfile Executable file
View 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
View 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

View File

@@ -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
View 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
View 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
View 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
View 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
View 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
View 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
View 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));
});
});
});