diff --git a/.env b/.env
new file mode 100644
index 0000000000000000000000000000000000000000..5f4d4f89f7a9503eed479cf9ae40a7b9325a5823
--- /dev/null
+++ b/.env
@@ -0,0 +1,6 @@
+AUTH_SERVICE_HOSTNAME=auth-api
+USERS_SERVICE_HOSTNAME=users-api
+HOTELS_SERVICE_HOSTNAME=hotels-api
+BOOKINGS_SERVICE_HOSTNAME=bookings-api
+DB_SERVICE_HOSTNAME=roomsbooking
+DB_DATABASE_NAME=RoomsBooking
\ No newline at end of file
diff --git a/angular/RestClient/Dockerfile b/angular/RestClient/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..2e7bc5701936d528a696ce40b7c6214df7a35159
--- /dev/null
+++ b/angular/RestClient/Dockerfile
@@ -0,0 +1,27 @@
+# Etapa 1: Construcción de la aplicación Angular
+FROM node:20 AS build
+
+# Establecer el directorio de trabajo
+WORKDIR /app
+
+# Copiar archivos de package.json e instalar dependencias
+COPY package*.json ./
+RUN npm install
+
+# Copiar el código fuente de Angular
+COPY . .
+
+# Compilar la aplicación Angular para producción
+RUN npm run build -- --output-path=dist/app --configuration production
+
+# Etapa 2: Servidor Nginx para producción
+FROM nginx:alpine AS production
+
+# Copiar los archivos de construcción generados en la etapa anterior a la carpeta de Nginx
+COPY --from=build /app/dist/app/browser /usr/share/nginx/html
+
+# Exponer el puerto 80 para Nginx
+EXPOSE 7920
+
+# Iniciar Nginx
+CMD ["nginx", "-g", "daemon off;"]
diff --git a/angular/RestClient/default.conf b/angular/RestClient/default.conf
new file mode 100644
index 0000000000000000000000000000000000000000..9f78ceb14768cd5687f0eae199dcbdf0d6d21cae
--- /dev/null
+++ b/angular/RestClient/default.conf
@@ -0,0 +1,23 @@
+server {
+
+    # Ubicación de los archivos estáticos
+    root /usr/share/nginx/html;
+
+    location / {
+        try_files $uri $uri/ /index.html;
+    }
+
+    # Configuración de caché (opcional)
+    location ~* \.(?:manifest|css|js|map|json)$ {
+        expires 1h;
+        add_header Cache-Control "public";
+    }
+
+    # Deshabilitar la cache de contenido dinámico
+    location ~* \.(?:png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
+        expires 1h;
+        access_log off;
+    }
+
+    error_page 404 /index.html;
+}
\ No newline at end of file
diff --git a/angular/RestClient/src/environments/environment.prod.ts b/angular/RestClient/src/environments/environment.prod.ts
index 445f0d3b770f01162006dbe8262e44338b9161e5..9318edcf83573d82d0005c135849aca26dc609a2 100644
--- a/angular/RestClient/src/environments/environment.prod.ts
+++ b/angular/RestClient/src/environments/environment.prod.ts
@@ -2,7 +2,7 @@
 export const environment = {
   production: true,
   authAPI: 'http://auth-api:8080',
-  userAPI: 'http://user-api:8080',
+  userAPI: 'http://users-api:8080',
   hotelAPI: 'http://hotels-api:8080',
   bookingAPI: 'http://bookings-api:8080',
 };
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..14b336d0c6c805a3bfc02c08b613432a8ae2807d
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,55 @@
+version: "3.7"
+
+volumes:
+  kong_data: {}
+  users_data: {}
+
+networks: #Red interna para comunicar los servicios (“Services on the same network can communicate with each other using their name”)
+  kong-net: {}
+
+services:
+  RoomsBooking-WEB:
+    image: roomsbooking-web-image
+    build:
+      context: ./angular/RestClient
+      dockerfile: ./Dockerfile
+    restart: unless-stopped
+    ports:
+      - 4221:80
+    networks: # Networks to join
+      - kong-net
+    depends_on:
+      - RoomsBooking-API
+  RoomsBooking-API:
+    image: roomsbooking-api-image
+    build:
+      context: ./java/roomBooking
+      dockerfile: ./Dockerfile
+    restart: unless-stopped
+    ports:
+      - 8080:8080
+    networks: # Networks to join
+      - kong-net
+    environment:
+      SPRING_DATASOURCE_URL: jdbc:mysql://RoomsBooking-database:3306/RoomsBooking?createDatabaseIfNotExist=true
+    depends_on:
+      - RoomsBooking-database
+
+  RoomsBooking-database:
+    image: mysql #Usamos imagen del respositorio ya creada
+    hostname: RoomsBooking-database
+    cap_add:
+      - SYS_NICE
+    restart: unless-stopped
+    ports:
+      - "3307:3306"
+    networks:
+      - kong-net
+    volumes:
+      - users_data:/var/lib/mysql
+    environment:
+      MYSQL_ROOT_PASSWORD: ClaveRoot
+      MYSQL_USER: user
+      MYSQL_PASSWORD: password
+      MYSQL_DATABASE: RoomsBooking
+      MYSQL_ROOT_HOST: "%"
diff --git a/docker-compose_test.yml b/docker-compose_test.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9e542345a0a36b2c3d97d31454ce948e911e84eb
--- /dev/null
+++ b/docker-compose_test.yml
@@ -0,0 +1,106 @@
+volumes:
+  kong_data: {}
+  users_data: {}
+
+networks:
+  kong-net: {}
+
+services:
+  Auth-API:
+    image: auth-api-image
+    hostname: ${AUTH_SERVICE_HOSTNAME}
+    build:
+      context: ./java/services/auth
+      dockerfile: Dockerfile
+    restart: unless-stopped
+    ports:
+      - 8101:8080
+    networks:
+      - kong-net
+    environment:
+      SPRING_DATASOURCE_URL: jdbc:mysql://${DB_SERVICE_HOSTNAME}:3306/${DB_DATABASE_NAME}?createDatabaseIfNotExist=true
+    depends_on:
+      - RoomsBooking-database
+
+  Users-API:
+    image: users-api-image
+    hostname: "${USERS_SERVICE_HOSTNAME}"
+    build:
+      context: ./java/services/users
+      dockerfile: Dockerfile
+    restart: unless-stopped
+    ports:
+      - 8111:8080
+    networks:
+      - kong-net
+    environment:
+      SPRING_DATASOURCE_URL: jdbc:mysql://${DB_SERVICE_HOSTNAME}:3306/${DB_DATABASE_NAME}?createDatabaseIfNotExist=true
+    depends_on:
+      - RoomsBooking-database
+
+  Hotels-API:
+    image: hotels-api-image
+    hostname: ${HOTES_SERVICE_HOSTNAME}
+    build:
+      context: ./java/services/hotels
+      dockerfile: Dockerfile
+    restart: unless-stopped
+    ports:
+      - 8121:8080
+    networks:
+      - kong-net
+    environment:
+      SPRING_DATASOURCE_URL: jdbc:mysql://${DB_SERVICE_HOSTNAME}:3306/${DB_DATABASE_NAME}?createDatabaseIfNotExist=true
+    depends_on:
+      - RoomsBooking-database
+      - Bookings-API
+
+  Bookings-API:
+    image: bookings-api-image
+    hostname: ${BOOKINGS_SERVICE_HOSTNAME}
+    build:
+      context: ./java/services/bookings
+      dockerfile: Dockerfile
+    restart: unless-stopped
+    ports:
+      - 8131:8080
+    networks:
+      - kong-net
+    environment:
+      SPRING_DATASOURCE_URL: jdbc:mysql://${DB_SERVICE_HOSTNAME}:3306/${DB_DATABASE_NAME}?createDatabaseIfNotExist=true
+    depends_on:
+      - RoomsBooking-database
+
+  RoomsBooking-database:
+    image: mysql
+    hostname: RoomsBooking-database
+    cap_add:
+      - SYS_NICE
+    restart: unless-stopped
+    ports:
+      - "3307:3306"
+    networks:
+      - kong-net
+    volumes:
+      - users_data:/var/lib/mysql
+    environment:
+      MYSQL_ROOT_PASSWORD: ClaveRoot
+      MYSQL_USER: user
+      MYSQL_PASSWORD: password
+      MYSQL_DATABASE: RoomsBooking
+      MYSQL_ROOT_HOST: "%"
+
+  RoomsBooking-Web:
+    image: roomsbooking-web-image
+    build:
+      context: ./angular/RestClient
+      dockerfile: ./Dockerfile
+    restart: unless-stopped
+    ports:
+      - 3328:80
+    networks:
+      - kong-net
+    environment:
+      SPRING_DATASOURCE_URL: jdbc:mysql://${DB_SERVICE_HOSTNAME}:3306/${DB_DATABASE_NAME}?createDatabaseIfNotExist=true
+    depends_on:
+      - RoomsBooking-database
diff --git a/java/roomBooking/Dockerfile b/java/roomBooking/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..8d0b79d6514534deddac782fc9367bcdbcaf89c3
--- /dev/null
+++ b/java/roomBooking/Dockerfile
@@ -0,0 +1,10 @@
+FROM maven:3-openjdk-17 AS maven
+WORKDIR /app
+COPY ./ ./
+RUN mvn -Dmaven.test.skip clean package
+FROM openjdk:17-jdk-oracle
+ARG JAR_FILE=/app/target/*.jar
+COPY --from=maven ${JAR_FILE} app.jar
+ENV PORT 8080
+EXPOSE $PORT
+ENTRYPOINT ["java","-jar", "/app.jar"]
\ No newline at end of file
diff --git a/java/services/authentication/Dockerfile b/java/services/authentication/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..8d0b79d6514534deddac782fc9367bcdbcaf89c3
--- /dev/null
+++ b/java/services/authentication/Dockerfile
@@ -0,0 +1,10 @@
+FROM maven:3-openjdk-17 AS maven
+WORKDIR /app
+COPY ./ ./
+RUN mvn -Dmaven.test.skip clean package
+FROM openjdk:17-jdk-oracle
+ARG JAR_FILE=/app/target/*.jar
+COPY --from=maven ${JAR_FILE} app.jar
+ENV PORT 8080
+EXPOSE $PORT
+ENTRYPOINT ["java","-jar", "/app.jar"]
\ No newline at end of file
diff --git a/java/services/bookings/Dockerfile b/java/services/bookings/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..8d0b79d6514534deddac782fc9367bcdbcaf89c3
--- /dev/null
+++ b/java/services/bookings/Dockerfile
@@ -0,0 +1,10 @@
+FROM maven:3-openjdk-17 AS maven
+WORKDIR /app
+COPY ./ ./
+RUN mvn -Dmaven.test.skip clean package
+FROM openjdk:17-jdk-oracle
+ARG JAR_FILE=/app/target/*.jar
+COPY --from=maven ${JAR_FILE} app.jar
+ENV PORT 8080
+EXPOSE $PORT
+ENTRYPOINT ["java","-jar", "/app.jar"]
\ No newline at end of file
diff --git a/java/services/hotels/.gitignore b/java/services/hotels/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..549e00a2a96fa9d7c5dbc9859664a78d980158c2
--- /dev/null
+++ b/java/services/hotels/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/java/services/hotels/Dockerfile b/java/services/hotels/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..8d0b79d6514534deddac782fc9367bcdbcaf89c3
--- /dev/null
+++ b/java/services/hotels/Dockerfile
@@ -0,0 +1,10 @@
+FROM maven:3-openjdk-17 AS maven
+WORKDIR /app
+COPY ./ ./
+RUN mvn -Dmaven.test.skip clean package
+FROM openjdk:17-jdk-oracle
+ARG JAR_FILE=/app/target/*.jar
+COPY --from=maven ${JAR_FILE} app.jar
+ENV PORT 8080
+EXPOSE $PORT
+ENTRYPOINT ["java","-jar", "/app.jar"]
\ No newline at end of file
diff --git a/java/services/users/Dockerfile b/java/services/users/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..8d0b79d6514534deddac782fc9367bcdbcaf89c3
--- /dev/null
+++ b/java/services/users/Dockerfile
@@ -0,0 +1,10 @@
+FROM maven:3-openjdk-17 AS maven
+WORKDIR /app
+COPY ./ ./
+RUN mvn -Dmaven.test.skip clean package
+FROM openjdk:17-jdk-oracle
+ARG JAR_FILE=/app/target/*.jar
+COPY --from=maven ${JAR_FILE} app.jar
+ENV PORT 8080
+EXPOSE $PORT
+ENTRYPOINT ["java","-jar", "/app.jar"]
\ No newline at end of file