Categorias
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"]