Dockerfile: Unterschied zwischen den Versionen

Aus robopagex.com
Zur Navigation springen Zur Suche springen
 
(32 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== '''Dockerfile''' ==
 
== '''Dockerfile''' ==
 +
[https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ Best practices for writing Dockerfiles]
 +
[https://docs.docker.com/engine/reference/builder/ Dockerfile reference]
 +
''Erstellen eines Docker Image''
  
''Erstellen eines Docker Image''
+
'''Dockerfile''' >> *Build* >> '''Docker Image''' >> *Run* >>> '''Docker Container'''
  '''Dockerfile''' >> *Build* >> '''Docker Image''' >> *Run* >>> '''Docker Container'''
+
 
 +
===== BUILD BASIC IMAGE =====
 +
'''$ docker build .'''
 +
'''$ docker build -t [NAME] .'''
 +
'''$ docker build -t php:latest .'''
 +
'''$ docker run -d --name container_name image_name'''
 +
 
 +
===== FROM =====
 +
''Select Base-Image''
 +
'''FROM alpine:latest '''
 +
 
 +
===== LABEL =====
 +
''Text Information, Description, etc..''
 +
'''LABEL name="Basic Image" '''
 +
'''LABEL version="1.0" '''
 +
'''LABEL description="A new basic image" '''
 +
'''LABEL maintainer="robopagex.com" '''
 +
'''LABEL contact="mymail@robopagex.com" '''
 +
 
 +
===== ADD & COPY =====
 +
'''ADD URL'''
 +
'''ADD FOLDER'''
 +
'''ADD TAR'''
 +
'''COPY FILE'''
 +
''FOR BOTH:'' '''--chown=user:group'''
 +
 
 +
===== CMD & ENTRYPOINT =====
 +
''CMD & ENTRYPOINT | RUN ON CONTAINER START''
 +
''Run only once or overwrite with'' '''docker run [command]'''
 +
''CMD = OVERWRITE PARAMETERS''
 +
''ENTRYPOINT = ADD OPTIONS''
 +
'''CMD ["/bin/bash"] '''
 +
'''CMD ["echo","Hello"] '''
 +
'''CMD ["com","arg","arg"] '''
 +
 
 +
''Overwrite CMD IP with robopagex.com''
 +
'''ENTRYPOINT ["/bin/ping"]'''
 +
'''CMD ["127.0.0.1"] '''
 +
'''docker run -it myalpine robopagex.com'''
 +
 
 +
'''CMD ["/bin/ping","127.0.0.1"] '''
 +
'''docker run -it myalpine robopagex.com'''
 +
 
 +
'''CMD ["/bin/ping","127.0.0.1"]'''
 +
'''docker run -it myalpine bash'''
 +
 
 +
===== RUN =====
 +
''RUN ON BUILD | multiple run possible''
 +
'''RUN echo "HELLO" '''
 +
'''RUN apt-get update && \ '''
 +
'''    apt-get upgrade -y '''
 +
 
 +
''DELETE CACHE AFTER INSTALL''
 +
'''RUN apt-get install -y --no-install-recommends'''
 +
 
 +
''INSTALL MYSQLI''
 +
'''RUN docker-php-ext-install mysqli'''
 +
 
 +
''INSIDE DOCKER CONTAINER|BASH''
 +
'''$ docker-php-ext-enable mysqli'''
 +
'''$ apachectl restart'''
 +
 
 +
===== VOLUME =====
 +
'''VOLUME ["/var/lib/mysql", "/var/log/mysql"]'''
 +
'''docker run .. -v /myvolumes/mysql:/var/lib/mysql -v /myvolumes/log:/var/log/mysql [IMAGE]'''
 +
''Without -v | docker create random UID like /var/lib/docker/volumes/uid''
 +
 
 +
''For Fedora,CentOS, RHEL users:''
 +
'''-v /myvolumes/mysql/:/var/lib/mysql:z'''
  
''' # BASIS IMAGE '''
+
===== EXAMPLE =====
 +
  '' FROM alpine:latest ''
 +
  '' RUN mkdir -p /app ''
 +
  '' COPY . /app ''
 +
'' JUMP INTO WORKDIR ''
 +
  '' WORKDIR /app ''
 +
  ''' docker run -it myalpine'''
  
 
   '' FROM alpine:latest ''
 
   '' FROM alpine:latest ''
   '' LABEL name="test alpine" ''
+
   '' ENV name TEST ''
   '' LABEL version="1.0" ''
+
   '' RUN echo "Hello, $name" ''
  '' LABEL description="a new alpine image" ''
 
  '' LABEL maintainer="robopagex.com" ''
 
  
   '' RUN apt-get update && \ ''
+
   '' ENV nginx_conf /app/myconf.conf ''
  ''    apt-get upgrade -y ''
 
''RUN EXECUTE ON BUILD''
 

Aktuelle Version vom 5. April 2022, 15:26 Uhr

Dockerfile

Best practices for writing Dockerfiles
Dockerfile reference

Erstellen eines Docker Image

Dockerfile >> *Build* >> Docker Image >> *Run* >>> Docker Container

BUILD BASIC IMAGE
$ docker build .
$ docker build -t [NAME] .
$ docker build -t php:latest .
$ docker run -d --name container_name image_name
FROM
Select Base-Image
FROM alpine:latest 
LABEL
Text Information, Description, etc..
LABEL name="Basic Image" 
LABEL version="1.0" 
LABEL description="A new basic image" 
LABEL maintainer="robopagex.com" 
LABEL contact="mymail@robopagex.com" 
ADD & COPY
ADD URL
ADD FOLDER
ADD TAR
COPY FILE
FOR BOTH: --chown=user:group
CMD & ENTRYPOINT
CMD & ENTRYPOINT | RUN ON CONTAINER START
Run only once or overwrite with docker run [command]
CMD = OVERWRITE PARAMETERS
ENTRYPOINT = ADD OPTIONS
CMD ["/bin/bash"] 
CMD ["echo","Hello"] 
CMD ["com","arg","arg"] 
Overwrite CMD IP with robopagex.com
ENTRYPOINT ["/bin/ping"]
CMD ["127.0.0.1"] 
docker run -it myalpine robopagex.com
CMD ["/bin/ping","127.0.0.1"] 
docker run -it myalpine robopagex.com
CMD ["/bin/ping","127.0.0.1"]
docker run -it myalpine bash
RUN
RUN ON BUILD | multiple run possible
RUN echo "HELLO" 
RUN apt-get update && \ 
    apt-get upgrade -y 
DELETE CACHE AFTER INSTALL
RUN apt-get install -y --no-install-recommends
INSTALL MYSQLI
RUN docker-php-ext-install mysqli
INSIDE DOCKER CONTAINER|BASH
$ docker-php-ext-enable mysqli
$ apachectl restart
VOLUME
VOLUME ["/var/lib/mysql", "/var/log/mysql"]
docker run .. -v /myvolumes/mysql:/var/lib/mysql -v /myvolumes/log:/var/log/mysql [IMAGE]
Without -v | docker create random UID like /var/lib/docker/volumes/uid
For Fedora,CentOS, RHEL users:
-v /myvolumes/mysql/:/var/lib/mysql:z
EXAMPLE
  FROM alpine:latest 
  RUN mkdir -p /app 
  COPY . /app 

JUMP INTO WORKDIR

  WORKDIR /app 
  docker run -it myalpine
  FROM alpine:latest 
  ENV name TEST 
  RUN echo "Hello, $name" 
  ENV nginx_conf /app/myconf.conf