Dockerfile: Unterschied zwischen den Versionen
		
		
		
		
		
		
		Zur Navigation springen
		Zur Suche springen
		
				
		
		
		
		
		
		
		
	
Geist (Diskussion | Beiträge)  | 
				Geist (Diskussion | Beiträge)   (→RUN)  | 
				||
| (39 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''  | ||
| + | |||
| + | '''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 ''  | ||
Aktuelle Version vom 5. April 2022, 14:26 Uhr
Inhaltsverzeichnis
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