Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

368
Vistas
Ejecute varios contenedores Docker a la vez usando docker-compose

El problema

Actualmente he creado un Dockerfile y un docker-compose.yml para ejecutar mi rest-api y la base de datos usando docker-compose up .

Lo que quiero hacer ahora es agregar otro contenedor, a saber, la aplicación web (compilada con React). Estoy un poco confundido sobre cómo hacerlo, ya que comencé a aprender Docker hace 2 días.

Estructura de carpetas

Esta es mi estructura de carpetas actual

  • Carpeta: rest-api (NodeJS)
    • Dockerfile
    • dockercompose.yml

La pregunta

Al final, quiero poder ejecutar docker-compose up para activar tanto el rest-api como la web-app .

¿Necesito crear un Dockerfile separado en cada carpeta y crear un docker-compose.yml 'global' para vincular todo?

Nueva estructura de carpetas:

  • dockercompose.yml
  • Carpeta: rest-api (NodeJS)
    • Dockerfile
  • Carpeta: aplicación web (Reaccionar)
    • Dockerfile

Mi configuración actual para ejecutar el rest-api y la base de datos

Dockerfile

 FROM node:13.10 # The destination of the app in the container WORKDIR /usr/src/app # Moves the package.json, package-loc.json and tsconfig.json to the specified workdir COPY package*.json ./ COPY tsconfig.json ./ # Create user and postgres ENV POSTGRES_USER root ENV POSTGRES_PASSWORD 12345 ENV POSTGRES_DB postgres ENV POSTGRES_URI 'postgres://postgres:12345@postgres:5432/postgres' RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]

docker-compose.yml

 version: '3' services: node: container_name: rest-api restart: always build: . environment: PORT: 3000 ports: - '80:3000' links: - postgres postgres: container_name: postgres-database image: postgres environment: POSTGRES_URI: 'postgres://postgres:12345@postgres-database:5432/postgres' POSTGRES_PASSWORD: 12345 ports: - '5432:5432'
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Ok, entonces hay bastantes formas de abordar esto y se basa más o menos en su preferencia.

Si desea ir con la estructura de carpetas propuesta (que está bien), puede, por ejemplo, hacerlo así:

Tenga un Dockerfile en la raíz de cada una de sus aplicaciones que construirá la aplicación específica (como ya sugirió) coloque su archivo docker-compose.yml en la carpeta principal de ambas aplicaciones (exactamente como ya lo propuso) y luego simplemente haga algunos cambios en su docker-compose.yml (solo dejé las partes esenciales. Tenga en cuenta que los enlaces ya no son necesarios: la red interna resolverá los nombres de los servicios en la dirección IP del servicio correspondiente)

 version: '3' services: node: build: context: rest-api environment: PORT: 3000 ports: - '3000:3000' web: image: web-app build: context: web-app ports: - 80:80 postgres: image: postgres environment: POSTGRES_URI: 'postgres://postgres:12345@postgres-database:5432/postgres' POSTGRES_PASSWORD: 12345 ports: - '5432:5432'

Entonces, el context es lo que le dice a Docker que lo que está creando está en un directorio diferente y que todos los comandos ejecutados en Dockerfile serán relativos a esa carpeta.

También cambié las asignaciones de puertos, porque probablemente querrá acceder a su aplicación web a través del puerto HTTP. Tenga en cuenta que la aplicación web podrá comunicarse con el contenedor rest-api utilizando el nombre de host del node siempre que el servicio del nodo esté vinculado a 0.0.0.0:3000 (no 127.0.0.1:3000)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda