Buat saya yang baru pake docker, alasan kenapa pake docker untuk API, karena prinsip “it’s work on my PC” dan keamanan (isolation). Ya, si container ini mudah di build, kapan dan di mana saja, selain itu kalau ada yg iseng, “ya udah hancurkan saja containernya, gw tinggal build lagi”. Langsung aja ya, pertama buat Dockerfile

FROM node:12-alpine
MAINTAINER ipang

RUN mkdir -p /express
RUN mkdir -p /express/node_modules
WORKDIR /express
ENV PATH /express/node_modules/.bin:$PATH

COPY package.json /express/package.json
RUN npm install
COPY . /express

EXPOSE 3000
CMD ["node", "server.js"]

Lalu docker-compose.yml

version: '3'

services:
    express-rest:
        image: express-rest-img
        container_name: express-rest-ctr
        build:
            context: .
            dockerfile: Dockerfile
        ports:
            - 127.0.0.1:3000:3000
        depends_on:
            - express-rest-sql
        networks:
            - express-network
        tty: true
        # activate this to debug container
        # command: tail -f /dev/null

    express-rest-sql:
        image: mysql:5.7
        container_name: express-rest-mysql
        ports:
            - 3306:3306
        environment:
            - MYSQL_ROOT_PASSWORD=dramaterus
            - MYSQL_USER=data_user
            - MYSQL_PASSWORD=drakorterus
            - MYSQL_DATABASE=data
        volumes:
            - express-mysql-vol:/var/lib/mysql
        networks:
            - express-network

volumes:
    express-mysql-vol:
networks:
    express-network:
        driver: bridge

Jalankan docker-compose up -d, lalu jalankan docker exec -i express-rest-mysql mysql -u root -p19secondvideo data < data.sql untuk mengimport table dan data (entrypoint nya belum bisa).

Tampilan Log Setelah docker-compose up (Bila Tidak Ada Error)

Tampilan Log Setelah docker-compose up (Bila Tidak Ada Error)

Sekarang kita coba test upload data lewat Postman

Test POST Data

Test POST Data

Test GET Data yang Tadi di POST

Test GET Data yang Tadi di POST

Karena saya di sini cuma containerized, biar lebih jelas tentang Express dan MySQL nya silahkan langsung ke tutorial nya di Bezkoder.com - nodejs express mysql (thank for great tutorial)

Anda bisa clone/forked project ini di gitlab.com/ipang/simple-rest-express