Skip to content

Instantly share code, notes, and snippets.

@marc0x71
Last active February 20, 2021 18:21
Show Gist options
  • Save marc0x71/508fef39151bacfeac9c1052ad70c7de to your computer and use it in GitHub Desktop.
Save marc0x71/508fef39151bacfeac9c1052ad70c7de to your computer and use it in GitHub Desktop.
Comandi Docker

Docker

Comandi utili

docker version

docker run hello-world

docker ps

docker ps -a

docker images

docker network ls

docker network create mongo-network

docker run -p 27017:27017 -d mongo

docker logs <container>

docker exec -it <container> /bin/sh

docker rm <container>

docker rmi <image>

Docker mongo

Avvio MongoDB

docker network create mongo-network

docker run -d --network mongo-network \
    -p 27017:27017 \
    -e MONGO_INITDB_ROOT_USERNAME=admin \
    -e MONGO_INITDB_ROOT_PASSWORD=password \
    --name mongo-db
    mongo

MONGO_INITDB_ROOT_USERNAME e MONGO_INITDB_ROOT_PASSWORD sono l'utente e la password di amministrazione

Avvio Mongo-Express

docker run -d \
    --network mongo-network \
    -p 8080:8081 \
    -e ME_CONFIG_MONGODB_ADMINUSERNAME="admin" \
    -e ME_CONFIG_MONGODB_ADMINPASSWORD="password" \
    -e ME_CONFIG_MONGODB_SERVER="mongo-db" \
    --name mongo-express \
    mongo-express

ME_CONFIG_MONGODB_ADMINUSERNAME e ME_CONFIG_MONGODB_ADMINPASSWORD devono essere rispettivamente MONGO_INITDB_ROOT_USERNAME e MONGO_INITDB_ROOT_PASSWORD definite prima

ME_CONFIG_MONGODB_SERVER corrisponde al nome del container specificato all'avvio di MongoDB

MongoDB e Mongo-Express con Docker-Compose

mongo-docker-composer.yaml:

version: '3'
services: 
    mongodb: 
        image: mongo
        ports: 
            - 27017:27017
        environment:
            - MONGO_INITDB_ROOT_USERNAME=admin
            - MONGO_INITDB_ROOT_PASSWORD=password
    mongo-express:
        image: mongo-express
        ports:
            - 8080:8081
        environment:
            - ME_CONFIG_MONGODB_ADMINUSERNAME=admin
            - ME_CONFIG_MONGODB_ADMINPASSWORD=password
            - ME_CONFIG_MONGODB_SERVER=mongodb

Per avviare:

docker-compose -f mongo-docker-composer.yaml up -d

Per fermare:

docker-compose -f mongo-docker-composer.yaml down

Creare un Dockerfile

Esempio di Dockerfile per NodeJS

FROM node:13-alpine

ENV MONGO_DB_USERNAME=admin \
    MONGO_DB_PASSWORD=password

RUN mkdir -p /home/app

COPY . /home/app

CMD ["node", "/home/app/server.js"]

Il file si DEVE chiamare Dockerfile

FROM specifica l'immagine di partenza dal DockerHub

ENV specifica eventuali variabili di ambiente

RUN server per specificare comandi da eseguire all'avvio del container (ce ne possono essere N)

COPY il comando è eseguito a livello di HOST, copia i file dal PC al container

CMD è comando eseguito all'avvio del container (entrypoint)

docker build -t my-app:1.0 .

my-app è il nome del container da creare, 1.0 è il TAG e . è il path dove si trova il Dockerfile

Docker volume

docker run -d --network mongo-network \
    -p 27017:27017 \
    -v /home/data:/data/db \
    -e MONGO_INITDB_ROOT_USERNAME=admin \
    -e MONGO_INITDB_ROOT_PASSWORD=password \
    --name mongo-db
    mongo

Dove /home/data è il filesystem fisico presente sulla macchina host, mentre /data/db è il filesystem del container

docker run -d --network mongo-network \
    -p 27017:27017 \
    -v /data/db \
    -e MONGO_INITDB_ROOT_USERNAME=admin \
    -e MONGO_INITDB_ROOT_PASSWORD=password \
    --name mongo-db
    mongo

Docker in automatico crea sulla macchina host l'alberatura /data/db necessaria, come richiesto nel container

docker run -d --network mongo-network \
    -p 27017:27017 \
    -v mongo-data:/data/db \
    -e MONGO_INITDB_ROOT_USERNAME=admin \
    -e MONGO_INITDB_ROOT_PASSWORD=password \
    --name mongo-db
    mongo

Docker in automatico crea e gestisce un volume sulla macchina host relativo all'alberatura /data/db 👍

mongo-docker-composer.yaml:

version: '3'
services: 
    mongodb: 
        image: mongo
        ports: 
            - 27017:27017
        environment:
            - MONGO_INITDB_ROOT_USERNAME=admin
            - MONGO_INITDB_ROOT_PASSWORD=password
        volumes:
            - mongo-data:/data/db
    mongo-express:
        image: mongo-express
        ports:
            - 8080:8081
        environment:
            - ME_CONFIG_MONGODB_ADMINUSERNAME=admin
            - ME_CONFIG_MONGODB_ADMINPASSWORD=password
            - ME_CONFIG_MONGODB_SERVER=mongodb
volumes:
    mongo-data:
        driver: local
docker volume ls
docker volume inspect docker-dev_mongo-data

Link utili

Docker

Docker Hub

Amazon ECR - Amazon Elastic Container Registry

ECR login GitHub Actions

AWS Credentials GitHub Actions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment