Durée : ~30min
Vous pouvez poser des questions à tout moment !
FROM ubuntu:14.04
MAINTAINER Nicolas Djambazian
# install node
RUN apt-get update && apt-get install -y nodejs npm
COPY back/package.json /src/package.json
RUN cd /src; npm install --production
# Bundle app source
COPY back/ /src
EXPOSE 80
ENV APP_PORT 80
CMD ["nodejs", "/src/index.js"]
docker build -t username/my-app .
docker run -p 3000:80 -d username/my-app
Sur MacOS, docker tourne dans une machine virtuelle
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v1.10.3
$ curl 192.168.99.100:3000
Hello World!
Docker garde un cache et reconstruit tout depuis le dernier changement.
D'où :
RUN apt-get update && apt-get install -y nodejs npm
Et
COPY back/package.json /src/package.json
RUN cd /src; npm install --production
# Bundle app source
COPY back/ /src
FROM node:4
MAINTAINER Nicolas Djambazian
# no node install
# docker-compose.yml
back:
build: .
volumes:
- "./back/:/src"
ports:
- "3000:80"
links:
- db
db:
image: mysql:5.7
ports:
- "3306:3306"
environment:
- "MYSQL_ROOT_PASSWORD=rootPassword"
- "MYSQL_USER=user"
- "MYSQL_PASSWORD=pass"
- "MYSQL_DATABASE=database"
Utilisations :
"mysql://user:pass@db:3306/database"
Rappel :
# docker-compose.yml
back:
build: .
links:
- db
db:
image: mysql:5.7
ports:
- "3306:3306"
Dans le même Dossier/repo (git submodule
éventuellement)
On deversionne le docker-compose.yml (docker-compose.yml.dist) pour pouvoir le personnaliser
# docker-compose.yml
back:
build: .
volumes:
- "./back/:/src"
Ou
# docker-compose.yml
back:
build: .
volumes:
- "../moBackDanUnAutreRepo/:/src"
Pour pas tout perdre à chaque build
VOLUME /var/log /src/cache
Pour les consulter sans se connecter au container
# docker-compose.yml
back:
build: .
volumes:
- "logs/:/var/log"
Image : System buildé et configuré n'ayant jamais tourné
Container : Instance d'une image ayant tournée / en fonctionnement
Container actifs | docker ps |
Tous les container | docker ps -a |
Images | docker images |
Supprimer un container | docker rm |
Supprimer une images | docker rmi |
Lancer une commande dans une image | docker run --rm -it ImageName "command" |
Lancer une commande dans un container actif | docker exec -it ContainerName "command" |
restart: always
$ git pull
$ docker-compose build back
$ docker-compose up --no-deps -d back
Slides : https://github.com/tychota/conf-docker-bam
Repository : https://github.com/bamlab/docker-demo