Appunti DockerContainer :
1. Docker engine, creazione di un'immagine di riferimento :
docker build -t glavermi/nodejshdp . <- att.ne al punto finale
//Creazione di un'immagine che abbia come nome TAG un repository remoto identificato da "glavermi" e nome macchina "nodejshdp" . Il nome del TAG ci servirà per gestirla altrimenti bisogna riferirsi al ContainerID che non compare come suggerimento nella shell.//
file di setup -> Dockerfile
FROM node:8
#application directory
WORKDIR /usr/src/app/DevicesPosition
COPY ./instantclient_18_3/ /opt/instantclient_18_3/
# Bundle app source
COPY ./DevicesPositions/trunk ./
ENV LD_LIBRARY_PATH="/opt/instantclient_18_3"
RUN apt-get update \
&& apt-get install -y libaio1 \
&& apt-get install -y build-essential \
&& apt-get install -y unzip \
&& apt-get install -y curl
#RUN npm install
EXPOSE 3000
CMD [ "npm", "start" ]
----
2. Avvio della macchina (Il Container è pronto - ma non è avviato) :
docker run -it -d -p 3000:3000 glavermi/nodejshdp:latest
//"Latest" è la versione del Container - Docker la aggiunge nel caso non venda specificato con il Build - io non l'avevo fatto//
----
3. Creazione delle swarm :
docker stack deploy --compose-file docker-swarm-2.yml stack-nodejshdp
//nel file .yml ci sarà la logica di creazione massiva delle macchine partendo dal container definito a priori//
file di setup -> docker-swarm-2.yml
version: "3.0"
services:
web:
# replace username/repo:tag with your name and image details
image: glavermi/nodejshdp:latest
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 100M
restart_policy:
condition: on-failure
ports:
- "3000:3000"
networks:
- webnet
volumes:
- my_data_4:/usr/src/app/my_data
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
networks:
webnet:
volumes:
my_data_4: