alexa-tracking
Selamat Guest, Agan dapat mencoba tampilan baru KASKUS Masih Kangen Tampilan Sebelumnya
Kategori
Kategori
Home / FORUM / All / Tech / ... / Programmer Forum /
[Sharing] Dockerize Node Express + Postgres
1024
1024
KASKUS
51
244
https://www.kaskus.co.id/thread/5bf5a37660e24bc23f8b4569/sharing-dockerize--node-express--postgres

[Sharing] Dockerize Node Express + Postgres

Hae Sepuh-sepuh numpang share perihal eksperimen iseng-iseng ane hari ini.

Dockerize Node Express + Postgres

Intro
Sebenernya ane lakuin ni eksperimen gegara ane kesel banget dari kemarenan ngga bisa connect service node ane dengan container docker postgres ane. Akhirnya ane kepikiran untuk make docker-compose dan wrap docker container service ane dengan postgres nya.

dan dalam trit ini ane konsen ke proses dockerize nya aja, ngga detil ke app nya. jadi lebih baik agan clone repo ane di sini https://github.com/hare451g/hare-bac...nd-boilerplate

Langkah langkah dockeriziation

Langkah 0: package.json
sebelumnya bikin dulu package.json nya :

Code:
{
"name": "hare-backend-boilerplate",
"version": "0.0.1",
"description": "starting project without pain",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"dev": "nodemon index.js"
},
"keywords": [
"node",
"express",
"postgres"
],
"author": "hendra 'hare' sadewa",
"license": "ISC",
"dependencies": {
"body-parser": "^1.18.3",
"cors": "^2.8.5",
"dotenv": "^6.1.0",
"express": "^4.16.4",
"moment": "^2.22.2",
"pg": "^7.6.1",
"sequelize": "^4.41.2"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-airbnb": "^3.0.1",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-2": "^6.24.1",
"eslint": "^5.9.0",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-plugin-import": "^2.14.0",
"nodemon": "^1.18.6"
}
}



Langkah 1: Bikin Dockerfile
Untuk service express nya ane bikin dockerfile sebagai berikut:

Code:
FROM node:9.11.1-stretch

# Set working directory to /app

WORKDIR /app



# update apt

RUN apt-get update

RUN apt-get install apt-utils -y

RUN apt-get install curl apt-transport-https -y



# install yarn

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -

RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

RUN apt-get update && apt-get install yarn -y



# install project global dependencies

RUN npm install -g nodemon



# install dependencies

COPY package.json /app

RUN yarn



# Copy all current contents to working directory

COPY . /app



# Exposing the app to port 3000
EXPOSE 3000


dari Dockerfile diatas ane melakukan:
  1. ambil docker image node js based on debian 9 'stretch'
  2. setup direktori aktif proyek ane di docker container ke direktori /app
  3. update aptitude, dan download curl, apt-utils, dan apt-transport-https
  4. download dan install yarn ('ane kebiasaan pake yarn')
  5. install nodemon dengan scope global
  6. copy package.json ke direktori aktif ane ( /app ).
  7. install dependensi dengan perintah yarn
  8. copy seluruh konten folder proyek ane kedalam direktori aktif container.
  9. ekspos / publish port 3rebu.

Langkah 2: bikin .dockerignore
buat .dockerignore supaya file / folder yang ngga dibutuhin, ngga ikut kebawa.
isinya gini nih:
Code:
node_modules
dist
pgdata
.git


Langkah 3: Bikin docker-compose.yml
file ini isinya defisini tentang docker image yang akan di pakai yaitu postgres dan dockerfile yang tadi kita buat.

Code:

Code:
version "3"
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
volumes:
- ./pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
app:
build: .
volumes:
- ./:/app
depends_on:
- db
ports:
- "3000:3000"
command: nodemon --exec babel-node src/ src/index.js


yang ane lakuin di docker-compose diatas adalah:
  1. split services jadi dua, yaitu db dan app, db buat postgresql, dan app buat app node + express
  2. dalam service db ane pake image postgres, setup nilai default password dan username db dengan string 'postgres', setup volume yang digunakan untuk save file db posgres ke folder pgdata yang di mapping ke direktori dalam container /var/lib/postgresql/data, terakhir ekpos port yang digunakan yaitu 5432 ke 5432
  3. dalam service app ane pakai image yang dibuat dari dockerfile di direktori yang sama dengan file docker-compose ini ( perhatikan simbol titik ), lalu ane map direktori proyek ane ke direktori /app yang ada di container, terus ane nyatain kalo service ini butuh service db, kemudian ane ekspos port 3000 ke 3000 ( port dimana app ane nge-listen ), terakhir ane jalanin perintah nodemon untuk nge-eksekusi transpiler babel di folder src dan turunannya, jadi dia bakalan nge-transpile setiap ada perubahan di folder src kebawah.

Langkah 4: Jalanin docker-compose nya
ya seperti di judul langkah ini ye gan, tinggal jalanin docker-compose nya dan hasilnya akan seperti ini:
Spoiler for ini:


sekali lagi, yang ane share penjelasan tentang proses dockerize nya bukan keseluruhan proyek, jadi lebih baik sambil clone repo ini https://github.com/hare451g/hare-bac...nd-boilerplate

oke, akhirnya ane bisa tidur tenang setelah sekian lama penasaran sama proses dockerize ini.
emoticon-Malu
Beri apresiasi terhadap thread ini Gan!


×
GDP Network
© 2018 KASKUS, PT Darta Media Indonesia. All rights reserved
Ikuti KASKUS di