diff --git a/.env-example b/.env-example
index 935a3defe0b9677965ef269672001d6e7a9465d3..f8209f46d40bb5947e16d98f126b6f2a634ed246 100644
--- a/.env-example
+++ b/.env-example
@@ -8,3 +8,6 @@ DB_NAME=film-db
 
 # ADMINER
 ADMINER_PORT=8080
+
+# CLIENT
+CLIENT_PORT=3000
diff --git a/docker-compose.yml b/docker-compose.yml
index f2c34d8390a3eb112e2b049b9269b52cce4afe3f..16ea7575af44b61bebe406e3feb24c6911f4106f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -15,10 +15,12 @@ services:
       # changes in host's ./backend directory will be propagated to the container
       - ./backend:/usr/src/app
       # this prevents our host files from overriding container's node_modules
-      - exclude:/usr/src/app/node_modules/
+      - exclude-server:/usr/src/app/node_modules/
     networks:
-      - app-network
+      - backend-network
     restart: always
+    depends_on:
+      - postgres-db
 
   postgres:
     container_name: postgres
@@ -27,7 +29,7 @@ services:
     volumes:
       - ./backend/database-storage:/var/lib/postgresql/data
     networks:
-      - app-network
+      - backend-network
     environment:
       POSTGRES_USER: ${DB_USER}
       POSTGRES_PASSWORD: ${DB_PASSWORD}
@@ -46,9 +48,28 @@ services:
     depends_on:
       - postgres-db
 
+  client:
+    container_name: client
+    image: client:1.0.0
+    build:
+      context: ./frontend
+      dockerfile: Dockerfile
+    env_file: .env
+    ports:
+      - 127.0.0.1:${CLIENT_PORT}:3000
+    volumes:
+      # changes in host's ./frontend directory will be propagated to the container
+      - ./frontend:/usr/src/app
+      # this prevents our host files from overriding container's node_modules
+      - exclude-client:/usr/src/app/node_modules/
+    restart: always
+    depends_on:
+      - server
+
 volumes:
-  exclude:
   database-storage:
+  exclude-server:
+  exclude-client:
 
 networks:
-  app-network:
+  backend-network:
diff --git a/frontend/.dockerignore b/frontend/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..ca399854d76119a511bbdc811c030208ec7db75f
--- /dev/null
+++ b/frontend/.dockerignore
@@ -0,0 +1,9 @@
+# Node modules folder
+node_modules
+
+# Git
+.gitignore
+
+# Docker files
+Dockerfile
+.dockerignore
diff --git a/frontend/Dockerfile b/frontend/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..3776f627b4bbdf1a921f9e13008cf7fc06315715
--- /dev/null
+++ b/frontend/Dockerfile
@@ -0,0 +1,13 @@
+FROM node:16-alpine
+
+WORKDIR /usr/src
+
+COPY ["package.json", "package-lock.json*", "./"]
+RUN npm install
+ENV PATH=/usr/src/node_modules/.bin:$PATH
+
+WORKDIR /usr/src/app
+
+COPY . .
+
+CMD ["npm", "run", "dev"]
diff --git a/frontend/package.json b/frontend/package.json
index d465e2c1ec70728334b9d8f0ae15bbb162c97aaf..fb6322e2217ffe07934a324a00c8ba60960d5a7a 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -3,7 +3,7 @@
   "private": true,
   "version": "0.0.0",
   "scripts": {
-    "dev": "vite",
+    "dev": "vite --host",
     "build": "tsc && vite build",
     "preview": "vite preview"
   },