Dockerfile: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Geist (Diskussion | Beiträge) |
Geist (Diskussion | Beiträge) (→RUN) |
||
(24 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, 15: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