TECNOLOBO

No recuerdas tu codigo?
Se te olvido como se hace?

Aqui podras guardar lo que necesiten
Y cuando sea necesesario

Creado por julian gomez
iiiiii

Correr con dockerfile - compose



Descripcion

se va correr una app usando un contenedor pasa db

Nota 1


OBJETIVO: 
se va correr una app usando un contenedor para db y uno enlazando todos los archivos del proyecto


Descripcion:
  1.Proyecto descaregable de link 
  	1.1:https://import.cdn.thinkific.com/643563/courses/2100309/tesloshop-221214-100400.zip
  2. Leer el archivo readme

  3.estructura de archivos de la app
    /src
    /static
    /test
    .env
    .gitignore
    docker-compose.yml
    .dockerignore
    .package.json #eliminar_todos_los ^ 
    tsconfig.json
  4.Correr la aplicacion
  	4.1: docker compose up  o  docker compose down --volume
    4.2: tambien se puede correr
    	4.2.1: docker compose -f docker-compose.yml up(build) #esto_se_hace_por_si_se_tienen_multiples_compose

						

Nota 2


#docker_compose.yml

version: '3'

services:  
  
  app:
    build: #con el domando buld le vamos a decir a docker que se comportara como una imagen
      context: . #apartir de aqui va buscar el dockerfile
      target: dev-deps #del Dockerfile toma el  as dev-deps
      dockerfile: Dockerfile #va buscar el dockerfile con el nombre de Dockerfile
    image: tecnolobo/teslo-shop-backend #para_ponerle nombre a la imagen que se va crear apartir del dockerfile
    volumes:
      - .:/app/    #Enlazamos_nuestro_proyecto_con_la_carpeta_app_del_contenedor
      - /app/node_modules/ #cuando se crea el contenedor aun no existe el node_modules. por lo tanto
      # no de puede poner node_modules:/app/node_modules por lo cual cuando ya se crea el contenedor y se 
      # corre este ya se crea y es por esa razon que no se pone "node_modules:/app/node_modules" solo se le dice
      # que espere y enlazeme node_modules que va crear con app/node_modules "Que aunque no llene la carpeta en nuestra maquina host es necesaria para el contenedor"
    container_name: nestapp
    ports:
      - ${PORT}:${PORT}
    environment:
      APP_VERSION: ${APP_VERSION}
      STAGE: ${STAGE}
      DB_PASSWORD: ${DB_PASSWORD}
      DB_NAME: ${DB_NAME}
      DB_HOST: ${DB_HOST}
      DB_PORT: ${DB_PORT}
      DB_USERNAME: ${DB_USERNAME}
      PORT: ${PORT}
      HOST_API: ${HOST_API}
      JWT_SECRET: ${JWT_SECRET}

  db:
    image: postgres:14.3
    restart: always
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: ${DB_NAME}
    container_name: ${DB_NAME}
    volumes:
      - postgres-db:/var/lib/postgresql/data


volumes:
  postgres-db:
    external: false
						

Nota 3


#Dockerfile


FROM node:19-alpine3.15 as dev-deps 
WORKDIR /app
COPY package.json package.json
RUN yarn install
CMD [ "yarn","start:dev" ]

FROM node:19-alpine3.15 as prod-deps
WORKDIR /app
COPY package.json package.json
RUN yarn install --frozen-lockfile

FROM node:19-alpine3.15 as builder
WORKDIR /app
COPY --from=prod-deps /app/node_modules ./node_modules
COPY . .
# RUN yarn test
RUN yarn build


FROM node:19-alpine3.15 as prod
EXPOSE 3000
WORKDIR /app
ENV APP_VERSION=${APP_VERSION}
COPY --from=prod-deps /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist

CMD [ "node","dist/main.js"]