Docker
Docker
Commands:
attach Attach local standard input, output, and error streams to a running container
ls List containers
wait Block until one or more containers stop, then print their exit codes
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Aliases:
Options:
Commands:
ls List images
save Save one or more images to a tar archive (streamed to STDOUT by default)
characters ("never"|"always"|"auto")
(default "auto")
Commands:
ps List containers
-POSTGRES
docker container run^
-d^
--name postgres-db^
-e POSTGRES_PASSWORD=123456^
-v postgres-db:/var/lib/postgresql/data^
postgres:15.1
-PG ADMIN
docker container run ^
--name pgAdmin ^
-e PGADMIN_DEFAULT_PASSWORD=123456 ^
-e [email protected] ^
-dp 8080:80 ^
dpage/pgadmin4:6.17
-Creat Network
docker network ALGO PARA CREAR postgres-net
-UNION
-PHPMYAPACHE
docker container run --name phpmyadmin -d -e PMA_ARBITRARY=1 -p 8080:80 --network
world-app phpmyadmin:5.2.0-apache
-BIND VOLUME
crea un enlace entre una ubicación en el sistema de archivos del host y una ubicación en el
sistema de archivos del contenedor, lo que permite que los datos se compartan y sincronicen
entre el host y el contenedor.
--name nest-app ^
-w /app ^
-p 80:3000 ^
-v "$(pwd)":/app ^
node:16-alpine3.16 ^
-t klerith/cron-ticker:latest –push .
Si cambia algo en alguno de los bloques. Ahí se ejecuta nuevamente ese bloque
#CREACION IMAGEN
# docker build -t klerith/cron-ticker:mapache
#instalo las DEP, puedo agregar mas -> && npm install
RUN npm install
#Realizar el testing
RUN npm run test
docker build ls
DOCKER COMPOSE
Creo archivo “docker-compose.yml”
version: '3'
services:
#Config de la DB
db:
container_name: ${MONGO_DB_NAME}
image: mongo:6.0
volumes:
- poke-vol:/data/db
# ports:
# - 27017:27017
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
command: ['--auth']
#Forma de accedes a la DB
mongo-express:
depends_on:
- db
image: mongo-express:1.0.0-alpha.4
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=${MONGO_USERNAME}
- ME_CONFIG_MONGODB_ADMINPASSWORD=${MONGO_PASSWORD}
- ME_CONFIG_MONGODB_SERVER=${MONGO_DB_NAME}
ports:
- 8080:8081
restart: always
.env
MONGO_USERNAME=strider
MONGO_PASSWORD= 123456789
MONGO_DB_NAME=pokemonDB
Otro Ejemplo
Docker-compose.yml
version: '3'
services:
app:
build:
context: .
target: dev
dockerfile: Dockerfile
#se puede utilizar esta comando aqui A
command: yarn start:dev
volumes:
#la primera es mi bind volume
- .:/app/
- /app/node_modules
#la segunda es por si no existe/hay problema con la primera
container_name: nest-app
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
docker-compose-prod.yml
version: '3'
#Elimino lo que no necesito para levantar en produccion
services:
app:
build:
context: .
target: ${STAGE} # STAGE cambio en .env | dev -> prod |
dockerfile: Dockerfile
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
APP_VERSION=1.0.1
STAGE=dev
DB_PASSWORD=MySecr3tPassWord@as2
DB_NAME=TesloDB
DB_HOST=TesloDB
DB_PORT=5432
DB_USERNAME=postgres
PORT=3000
HOST_API=http://localhost:3000/api
JWT_SECRET=Est3EsMISE3Dsecreto32s