Dockerfile

Aus robopagex.com
Zur Navigation springen Zur Suche springen

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