Dockerfile

Without bash:

RUN ["apt-get", "install", "-y", "nginx"]

Example Dockerfile:

FROM ubuntu:14.04
MAINTAINER John Smith <john@gmail.com>
RUN apt-get update && apt-get install -y nginx
RUN echo 'Hi, I am in your container' > /usr/share/nginx/html/index.html
EXPOSE 80

Example php5-fpm:

FROM ubuntu:14.04
MAINTAINER John Smith <john@gmail.com>
RUN apt-get update && apt-get install -y php5-fpm
RUN echo 'cgi.fix_pathinfo = 0' >> /etc/php5/fpm/php.ini
ENTRYPOINT ["php5-fpm"]
CMD ["-F"]
EXPOSE 9000

Clean up APT when done:

RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
ENV myName="John Doe" myDog=Rex\ The\ Dog \
    myCat=fluffy


ARG var[=value]     # переменные, которые используются при билде, можно инициализировать
                                docker build --build-arg var=value, только те что описаны в докерфайле

Old php in docker

Dockerfile:

FROM debian:7.8

MAINTAINER Siryk Valentin <valentinsiryk@gmail.com>

RUN apt-get update \
    && apt-get install -y \
        libbz2-dev \
        libcurl4-gnutls-dev \
        libpng12-dev \
        libjpeg62-dev \
        libmcrypt-dev \
        libmhash-dev \
        libmysqlclient-dev \
        libxml2-dev \
        libxslt1-dev \
        make \
        apache2 \
        apache2-threaded-dev \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

ENV PHP_VERSION 5.2.9

# Download and unpack PHP
#COPY ./php-${PHP_VERSION}.tar.gz /tmp/
ADD http://museum.php.net/php5/php-${PHP_VERSION}.tar.gz /tmp/
RUN tar -xzf /tmp/php-${PHP_VERSION}.tar.gz -C /tmp

WORKDIR /tmp/php-${PHP_VERSION}

RUN ln -s /usr/lib/x86_64-linux-gnu/libjpeg.a /usr/lib/libjpeg.a \
    && ln -s /lib/x86_64-linux-gnu/libpng12.so.0.49.0 /usr/lib/libpng.so \
    && ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/libmysqlclient.so \
    && ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so /usr/lib/libmysqlclient_r.so


# Configure
RUN ./configure \
        --with-apxs2=/usr/bin/apxs2 \
        --disable-cgi \
        --with-mysql \
        --with-pdo-mysql
        #--with-mysqli \
        #--enable-cli \
        #--enable-discard-path \
        #--enable-mbstring \
        #--with-curl \
        #--with-gd \
        #--with-jpeg-dir \
        #--with-mcrypt

# Install
RUN make \
    && make install

RUN rm -rf /tmp/php* /var/tmp/*

RUN a2enmod rewrite

COPY ./default.conf /etc/apache2/sites-available/default

#COPY ./php.ini /usr/local/lib/php.ini

#RUN echo "<?php phpinfo(); ?>" > /var/www/index.php

EXPOSE 80

CMD [ "/usr/sbin/apache2ctl", "-D", "FOREGROUND" ]

default.conf:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www

        <Directory />
               Options FollowSymLinks
               AllowOverride All
        </Directory>

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>


        <FilesMatch \.php$>
                SetHandler application/x-httpd-php
        </FilesMatch>


        DirectoryIndex index.php


        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>