Java Project Deployment 템플릿

|

Java 프로젝트 배포

Docker Image를 이용해서 배포하는 경우와 Git 소스 코드를 이용해서 배포하는 yaml 코드 예제입니다.

사용방법은 예시는 다음과 같습니다.

$ oc create -f deployment-using-docker-image.yaml

$ oc create -f deployment-using-git.yaml


전체 코드는 GitHub에서 확인할 수 있습니다.

Dockerfile

FROM centos:7

RUN yum update -y && \
yum install -y wget && \
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel && \
yum clean all

ENV HOME /app
WORKDIR /app

COPY ./app .

EXPOSE 8080

RUN javac /app/SimpleWebServer.java
CMD ["java", "SimpleWebServer"]


deployment-using-docker-image.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: java-sample
  labels:
    app: java-sample
spec:
  template:
    metadata:
      labels:
        app: java-sample
    spec:
      containers:
      - image:  snowdeer/java-sample:latest
        name: java-sample
        ports:
        - containerPort: 8080
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: java-sample
  labels:
    app: java-sample
spec:
  ports:
  - name: java-sample
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: java-sample
  type: LoadBalancer
---
apiVersion: v1
kind: Route
metadata:
  name: java-sample
  labels:
    app: java-sample
spec:
  port: 
    targetPort: java-sample
  to:
    kind: Service
    name: java-sample
    weight: 100


deployment-using-git.yaml

apiVersion: v1
kind: BuildConfig
metadata:
  labels:
    app: java-sample
  name: java-sample
spec:
  failedBuildsHistoryLimit: 3
  nodeSelector: null
  postCommit: {}
  resources: {}
  runPolicy: Serial
  source:
    git:
      uri: 'https://github.com/snowdeer/openshift-java-sample.git'
    type: Git
  strategy:
    dockerStrategy:
      from:
        kind: DockerImage
        name: 'ubuntu:latest'
        
    type: Docker    
  successfulBuildsHistoryLimit: 5 
  output:
    to:
      kind: ImageStreamTag
      name: 'java-sample:latest'
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: java-sample
  labels:
    app: java-sample
spec:
  template:
    metadata:
      labels:
        app: java-sample
    spec:
      containers:
      - image:  snowdeer/java-sample:latest
        name: java-sample
        ports:
        - containerPort: 8080
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: java-sample
  labels:
    app: java-sample
spec:
  ports:
  - name: java-sample
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: java-sample
  type: LoadBalancer
---
apiVersion: v1
kind: Route
metadata:
  name: java-sample
  labels:
    app: java-sample
spec:
  port: 
    targetPort: java-sample
  to:
    kind: Service
    name: java-sample
    weight: 100

Node.js Project Deployment 템플릿

|

Node.js 프로젝트 배포

Docker Image를 이용해서 배포하는 경우와 Git 소스 코드를 이용해서 배포하는 yaml 코드 예제입니다.

사용방법은 예시는 다음과 같습니다.

$ oc create -f deployment-using-docker-image.yaml

$ oc create -f deployment-using-git.yaml


전체 코드는 GitHub에서 확인할 수 있습니다.

Dockerfile

FROM node:carbon

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY ./app .

EXPOSE 8080

CMD [ "npm", "start" ]


deployment-using-docker-image.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nodejs-sample
  labels:
    app: nodejs-sample
spec:
  template:
    metadata:
      labels:
        app: nodejs-sample
    spec:
      containers:
      - image:  snowdeer/nodejs-sample:latest
        name: nodejs-sample
        ports:
        - containerPort: 8080
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: nodejs-sample
  labels:
    app: nodejs-sample
spec:
  ports:
  - name: nodejs-sample
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: nodejs-sample
  type: LoadBalancer
---
apiVersion: v1
kind: Route
metadata:
  name: nodejs-sample
  labels:
    app: nodejs-sample
spec:
  port: 
    targetPort: nodejs-sample
  to:
    kind: Service
    name: nodejs-sample
    weight: 100


deployment-using-git.yaml

apiVersion: v1
kind: BuildConfig
metadata:
  labels:
    app: nodejs-sample
  name: nodejs-sample
spec:
  failedBuildsHistoryLimit: 3
  nodeSelector: null
  postCommit: {}
  resources: {}
  runPolicy: Serial
  source:
    git:
      uri: 'https://github.com/snowdeer/openshift-nodejs-sample.git'
    type: Git
  strategy:
    dockerStrategy:
      from:
        kind: DockerImage
        name: 'ubuntu:latest'
        
    type: Docker    
  successfulBuildsHistoryLimit: 5 
  output:
    to:
      kind: ImageStreamTag
      name: 'nodejs-sample:latest'
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nodejs-sample
  labels:
    app: nodejs-sample
spec:
  template:
    metadata:
      labels:
        app: nodejs-sample
    spec:
      containers:
      - image:  snowdeer/nodejs-sample:latest
        name: nodejs-sample
        ports:
        - containerPort: 8080
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: nodejs-sample
  labels:
    app: nodejs-sample
spec:
  ports:
  - name: nodejs-sample
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: nodejs-sample
  type: LoadBalancer
---
apiVersion: v1
kind: Route
metadata:
  name: nodejs-sample
  labels:
    app: nodejs-sample
spec:
  port: 
    targetPort: nodejs-sample
  to:
    kind: Service
    name: nodejs-sample
    weight: 100

Go Project Deployment 템플릿

|

Go 프로젝트 배포

Docker Image를 이용해서 배포하는 경우와 Git 소스 코드를 이용해서 배포하는 yaml 코드 예제입니다.

사용방법은 예시는 다음과 같습니다.

$ oc create -f deployment-using-docker-image.yaml

$ oc create -f deployment-using-git.yaml


전체 코드는 GitHub에서 확인할 수 있습니다.

Dockerfile

FROM golang:1.9.1-alpine3.6

WORKDIR /go/src/app
COPY ./app .

RUN go get -d -v ./...
RUN go install -v ./...

EXPOSE 8080
EXPOSE 8888

CMD ["/go/bin/app"]


deployment-using-docker-image.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: go-sample
  labels:
    app: go-sample
spec:
  template:
    metadata:
      labels:
        app: go-sample
    spec:
      containers:
      - image:  snowdeer/go-sample:latest
        name: go-sample
        ports:
        - containerPort: 8080
          protocol: TCP
        - containerPort: 8888
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: go-sample
  labels:
    app: go-sample
spec:
  ports:
  - name: go-sample-port1
    port: 8080
    protocol: TCP
    targetPort: 8080
  - name: go-sample-port2
    port: 8888
    protocol: TCP
    targetPort: 8888
  selector:
    app: go-sample
  type: LoadBalancer
---
apiVersion: v1
kind: Route
metadata:
  name: go-sample
  labels:
    app: go-sample
spec:
  port: 
    targetPort: go-sample-port1
  to:
    kind: Service
    name: go-sample
    weight: 100


deployment-using-git.yaml

apiVersion: v1
kind: BuildConfig
metadata:
  labels:
    app: go-sample
  name: go-sample
spec:
  failedBuildsHistoryLimit: 3
  nodeSelector: null
  postCommit: {}
  resources: {}
  runPolicy: Serial
  source:
    git:
      uri: 'https://github.com/snowdeer/openshift-go-sample.git'
    type: Git
  strategy:
    dockerStrategy:
      from:
        kind: DockerImage
        name: 'ubuntu:latest'
        
    type: Docker    
  successfulBuildsHistoryLimit: 5 
  output:
    to:
      kind: ImageStreamTag
      name: 'go-sample:latest'
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: go-sample
  labels:
    app: go-sample
spec:
  template:
    metadata:
      labels:
        app: go-sample
    spec:
      containers:
      - image:  snowdeer/go-sample:latest
        name: go-sample
        ports:
        - containerPort: 8080
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: go-sample
  labels:
    app: go-sample
spec:
  ports:
  - name: go-sample-port1
    port: 8080
    protocol: TCP
    targetPort: 8080
  - name: go-sample-port2
    port: 8888
    protocol: TCP
    targetPort: 8888
  selector:
    app: go-sample
  type: LoadBalancer
---
apiVersion: v1
kind: Route
metadata:
  name: go-sample
  labels:
    app: go-sample
spec:
  port: 
    targetPort: go-sample-port1
  to:
    kind: Service
    name: go-sample
    weight: 100

Python Project Deployment 템플릿

|

Python 프로젝트 배포

Docker Image를 이용해서 배포하는 경우와 Git 소스 코드를 이용해서 배포하는 yaml 코드 예제입니다.

사용방법은 예시는 다음과 같습니다.

$ oc create -f deployment-using-docker-image.yaml

$ oc create -f deployment-using-git.yaml


전체 코드는 GitHub에서 확인할 수 있습니다.

Dockerfile

FROM ubuntu

# basic setting for python
RUN apt-get update
RUN apt-get install -y python python-pip


# install my app
WORKDIR /app

COPY . .

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# expose ports
EXPOSE 8080


## launch
CMD [ "python", "./app/server.py" ]


deployment-using-docker-image.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: python-sample
  labels:
    app: python-sample
spec:
  template:
    metadata:
      labels:
        app: python-sample
    spec:
      containers:
      - image:  snowdeer/python-sample:latest
        name: python-sample
        ports:
        - containerPort: 8080
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: python-sample
  labels:
    app: python-sample
spec:
  ports:
  - name: python-sample
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: python-sample
  type: LoadBalancer
---
apiVersion: v1
kind: Route
metadata:
  name: python-sample
  labels:
    app: python-sample
spec:
  port: 
    targetPort: python-sample
  to:
    kind: Service
    name: python-sample
    weight: 100


deployment-using-git.yaml

apiVersion: v1
kind: BuildConfig
metadata:
  labels:
    app: python-sample
  name: python-sample
spec:
  failedBuildsHistoryLimit: 3
  nodeSelector: null
  postCommit: {}
  resources: {}
  runPolicy: Serial
  source:
    git:
      uri: 'https://github.com/snowdeer/openshift-python-sample.git'
    type: Git
  strategy:
    dockerStrategy:
      from:
        kind: DockerImage
        name: 'ubuntu:latest'
        
    type: Docker    
  successfulBuildsHistoryLimit: 5 
  output:
    to:
      kind: ImageStreamTag
      name: 'python-sample:latest'
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: python-sample
  labels:
    app: python-sample
spec:
  template:
    metadata:
      labels:
        app: python-sample
    spec:
      containers:
      - image:  snowdeer/python-sample:latest
        name: python-sample
        ports:
        - containerPort: 8080
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: python-sample
  labels:
    app: python-sample
spec:
  ports:
  - name: python-sample
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: python-sample
  type: LoadBalancer
---
apiVersion: v1
kind: Route
metadata:
  name: python-sample
  labels:
    app: python-sample
spec:
  port: 
    targetPort: python-sample
  to:
    kind: Service
    name: python-sample
    weight: 100

Hello. World Sample

|

Hello Node.js

package.json

{
  "name": "hello",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
  "test": "echo \"Error: no test specified\"exit 1",
  "start": "node app.js"
},
  "author": "",
  "license": "Apache",
  "dependencies": {
    "express": "^4.16.2"
  }
}


app.js

var port = 8080;

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('This is an index page.');
});

app.get('/hello', function (req, res) {
  res.send('Hello World!');
});

app.listen(port, function () {
  console.log('Example app is listening on port ', port);
});