Skip to content

Instantly share code, notes, and snippets.

@MacoChave
Created March 2, 2022 05:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MacoChave/1d5d95327721f793e810ad31a64af40a to your computer and use it in GitHub Desktop.
Save MacoChave/1d5d95327721f793e810ad31a64af40a to your computer and use it in GitHub Desktop.
Docker

Docker

Imagenes

Contenedores

Mostrar los contenedores corriendo

docker ps

Acceder de forma interactiva al contenedor my_express_rest_api por medio de bash

docker exec -it my_express_rest_api bash

Listar las variables de entorno

env

Comprobar conexión entre el contenedor actual y el contenedor my_mysql_db

ping my_mysql_db

Salir de la manera interactiva

exit

Acceder al modo interactivo del contenedor de la base de datos

docker exec -it -u root my_mysql_db bash

Red

Docker compose

Levantar el docker compose

docker-compose up --build code .

version: '3.8'
services:
express_res_api:
container_name: my_express_res_api
build: ./app/
environment:
- DB_PORT=3306
- DB_HOST=mysql_db
ports:
- "3000:3000"
depends_on:
- mysql_db
networks:
- docker_tuto_net
deploy:
resources:
# Limita la memoria para mejorar el rendimiento de los servidores
limits:
memory: 1G
mysql_db:
container_name: my_mysql_db
image: mysql:latest
# Important command to allow legacy authentications for old versions
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: employees
expose:
- "3306"
ports:
- "3306:3306"
# /docker-entrypoint-initdb.d mapea a ./db del proyecto para ejecutar .sql, .sh
volumes:
- docker_tuto_mysql_db_volume:/var/lib/mysql
- ./db:/docker-entrypoint-initdb.d
networks:
- docker_tuto_net
deploy:
resources:
limits:
memory: 1G
volumes:
docker_tuto_mysql_db_volume:
name: "docker_tuto_mysql_db_volume"
networks:
docker_tuto_net:
driver: bridge
name: docker_tuto_net
version: '3.8'
services:
myjenkins:
container_name: my_custom_jenkins
image: jenkins/jenkins:lts
user: root
environment:
MY_NAME: "santi_develops"
# Gmail extra configuration for mailer plugin
JAVA_OPTS: "-Djava.awt.handless=true -Dmail.smtp.starttls.enable=true"
SONARQUBE_HOST: mysonarqube
ports:
- "8080:8080"
- "50000:50000"
volumes:
# Named Docker volume details at the bottom
- jenkins_home: /var/jenkins_home
# Warning
- /var/run/docker.stock:/var/run/docker.stock
networks:
- net_devops
deploy:
resources:
limits:
cpus: "2"
memory: 2G
mysonarqube:
container_name: my_custon_sonarqube
# build: ./sonarqube_home
image: sonarqube:7.9.5-community
environment:
SONAR_ES_BOOTSTRAP_CHECKS_DISABLE: "true"
ports:
- "9000:9000"
networks:
- net_devops
volumes:
- ./sonarqube_home/conf/:/opt/sonarqube/conf
- ./sonarqube_home/data/:/opt/sonarqube/data
- ./sonarqube_home/logs/:/opt/sonarqube/logs
- ./sonarqube_home/extensions/:/opt/sonarqube/extensions
restart: unless-stopped
deploy:
resources:
limits:
cpus: "2"
memory: 3G
# To use docker-volume (custom_jenkins_home) instead of a directory path-file
volumes:
jenkins_home:
name: "custom_jenkins_home"
networks:
net_devops:
driver: bridge
name: net_devops
# Dockerfile for express & mysql app
FROM node
# Defines default ports and host for app and db
ARG app_port=3000
ARG db_host=mysql_db
ARG db_port=3306
# Add important environment variables that the server consumes
ENV APP_PORT=${app_port}
ENV DB_HOST=${db_host}}
ENV DB_PORT=${db_port}}
# Add dependencies for the node modules (to be installed)
COPY ["package.json", "package-lock.json", "/usr/src/"]
# Specific working directory for the container
WORKDIR /usr/src
# Install node dependencies via npm
RUN npm install
# Add main app functionalities
COPY ["app.js", "/usr/src/"]
COPY ["./config/db.config.js", "/usr/src/config/"]
COPY ["./db/model.js", "/usr/src/db/"]
COPY ["./routes/developers.js", "/usr/src/routes/"]
EXPOSE ${app_port}
CMD ["node", "app.js"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment