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)
Sekarang kita coba test upload data lewat Postman

Test POST Data

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