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>