diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..3c3629e647f5ddf82548912e337bea9826b434af
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1 @@
+node_modules
diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000000000000000000000000000000000000..f754650de6c4b29f7f9e7a3336191da8f405f71c
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,6 @@
+MYSQL_HOST=mysql
+MYSQL_USER=user
+MYSQL_USERNAME=user
+MYSQL_DATABASE=tubes-db
+MYSQL_PASSWORD=rootpw
+MYSQL_ROOT_PASSWORD=rootpw
diff --git a/.gitignore b/.gitignore
index b9470778764f72c5257a3361590d2994547f90e1..1b9599dbfb10ed27bdae298ab8daeff9f20480dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 node_modules/
 dist/
+.env
+mysql
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..2893c2e4e9905e5aa79afcf40f11b617ebedb2f4
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,10 @@
+FROM node:16-alpine
+
+WORKDIR /rest
+
+COPY . .
+RUN npm install
+
+EXPOSE 5000
+CMD ["npm", "run", "dev"]
+
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d16e18bb808589304731e65e9b29f8b4ead2120f
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,30 @@
+version: '3.9'
+
+services:
+  rest-service:
+    image: if3110-2023-02-36-rest-service:latest
+    ports:
+      - 5000:5000
+    env_file: .env
+    build: 
+      context: .
+      dockerfile: Dockerfile
+    volumes:
+      - '.:/rest'
+  
+  mysql:
+    image: 'mysql'
+    ports:
+      - "5307:3306"
+    env_file: .env
+    volumes:
+      - ./mysql:/var/lib/mysql
+
+  phpmyadmin:
+    image: phpmyadmin:latest
+    environment:
+      - PMA_HOST=mysql
+    ports:
+      - 5051:80
+    depends_on:
+      - mysql
\ No newline at end of file
diff --git a/index.ts b/index.ts
index fd1e028b761b17f2eedbdf69a598c54fe0f5ac82..217261daff874c082b1a88d6b9a8c0aa94c26ad8 100644
--- a/index.ts
+++ b/index.ts
@@ -1,17 +1,21 @@
 import express, {Express, Request, Response} from "express";
 const app = express();
-const port = 8000;
-
-console.log("tes")
+const port = 5000;
 
 app.get("/", (req, res) => {
-    res.send("MEMEK jawsdjah");
+    res.send("test get home");
+})
+
+app.get("/test", (req, res) => {
+    res.send("test get");
 })
 
-app.get("/kon", (req, res) => {
-    res.send("Kontolodon!!");
+app.post("/test", (req, res) => {
+    res.send("test post ganti gak");
 })
 
 app.listen(port, () =>{
     console.log(`listening on port ${port}`);
-})
\ No newline at end of file
+})
+
+console.log("successfully started")
\ No newline at end of file
diff --git a/scripts/build-image.sh b/scripts/build-image.sh
new file mode 100644
index 0000000000000000000000000000000000000000..60ee0416926a9d0243fc823f5a570d06170f64d4
--- /dev/null
+++ b/scripts/build-image.sh
@@ -0,0 +1 @@
+docker build -t if3110-2023-02-36-rest-service:latest .
\ No newline at end of file