Terminal
Rechercher…
Dockerfile

Instructions :

FROM : Indique l'image de base à utiliser
MAINTAINER : Auteur / mainteneur de l'image créee
RUN : Exécution d'une commande dans l'image
EXPOSE : Exposition des ports de l'application
COPY : Copie des ressources depuis la machine locale vers l'image
ENTRYPOINT : "Wrapper" autour de l'application
CMD : Commande exécutée lors de l'instanciation de l'image
2 formats possible pour les commandes ENTRYPOINT et CMD
Shell : /bin/ping localhost
Exec : ['ping', 'localhost'] - Format Recommandé
VOLUME : Définition d'un volume (donnée gérées en dehors de l'union filesystem)
WORKDIR : Répertoire de travail

Exemple de création d'images

Serveur Web :

Dockerfile.txt
# Image de base
FROM nginx:1.11.5
# Copie d'un fichier de configuration
COPY nginx.conf /etc/nginx/nginx.conf
Création de l'image :
-t : spécifie le tag de l'image
-f : spécifie à utiliser pour la construction (Dockerfile par défaut)
--no-cache : invalide le cache
# sudo docker image build [TAG] [Répertoire Dockerfile]
sudo docker image build -t www

Exemple d'application JAVA

Dockerfile.txt
FROM openjdk:7
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN javac Main.java
CMD ['java', 'Main']
Main.java
public class Main
{
public static void main(String[] args) {
System.out.println('Hello, World');
}
}
Création de l'image :
sudo docker image build -t hellojava:v1.0
Création d'un container à partir de l'image créée :
sudo docker container run hellojava:v1.0

Exemple d'application Python

Dockerfile.txt
FROM python:3
ADD barcode.py /
RUN pip3 install pystrich
CMD ['python', '/barcode.py']
barcode.py
# https://github.com/mmulqueen/pyStrich
from pystrich.datamatrix import DataMatrixEncoder
encoder = DataMatrixEncoder('Hello')
print(encoder.get_ascii())
Création de l'image :
sudo docker image build -t barcode
Création d'un container à partir de l'image créée :
sudo docker run barcode

Exemple d'application Node.js

Dockerfile.txt
FROM node:6.10.3
MAINTAINER Username <[email protected]>
ENV LAST_UPDATED 202004067153500
COPY package.json /app/package.json
RUN cd /app && npm install
COPY . /app/
EXPOSE 80
CMD ['npm', 'start']
package.json
{
"name": "testnodejs",
"version": "0.0.1",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"express": "^4.17.1",
"util": "0.12.2"
}
}
index.js
const express = require('express'),
util = require('util'),
let app = express();
app.get('/',
function(req, res){
res.setHeader('Content-Type',
'text/plain'
);
res.end(util.format(
'%s - %s',
new Date(),
'Got HTTP Get Request'
)
);
});
app.listen(process.env.PORT || 80);
Création de l'image :
sudo docker image build -t nodewww .
Création d'un container à partir de l'image créée :
sudo docker container run -p 8080:80 nodewww