-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.template
More file actions
141 lines (123 loc) · 4.23 KB
/
Dockerfile.template
File metadata and controls
141 lines (123 loc) · 4.23 KB
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# BEGIN - Multi-stage Build
# Stage 1: Install NodeJS dependencies
FROM node:20-alpine3.16 AS node-build
WORKDIR /usr/local/project
# Copy Node.js dependency files, Fixing global modules issue
COPY package.json yarn.lock .yarnrc.yml ./
COPY .yarn yarn
RUN apk update \
&& apk add --no-cache yarn \
&& yarn install --immutable \
&& yarn cache clean
# Stage 2: Build PHP-FPM environment
FROM php:7.4.33-fpm-alpine3.16
# Set up working directory and environment
ARG HTDOCS
ENV HTDOCS=${HTDOCS:-"/var/www/html"}
WORKDIR ${HTDOCS}
# Add mor NodeJS, CakePHP and Composer commands to system path
ENV PATH="${HTDOCS}/node_modules/.bin:${HTDOCS}/app/bin:${HTDOCS}/bin:${PATH}"
COPY --from=node-build /usr/local/project/node_modules node_modules
# END - Multi-stage Build
ARG PUID
ENV PUID=${PUID:-1000}
ARG GUID
ENV GUID=${GUID:-1000}
ARG PHP_EXTENSIONS
ENV PHP_EXTENSIONS=${PHP_EXTENSIONS:-%%PHP_EXTENSIONS%%}
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
RUN apk update \
&& apk add --no-cache \
python3 \
bash \
git \
zip \
unzip \
mariadb-client \
gettext \
openssh-client
RUN apk del build-base \
&& rm -rf /var/cache/apk/*
# ----------------------
# About Dockerfile ARGS:
# ALL the following ARGS are DUPLICATED in common.env and $BALENA_ARCH.env
# and Scripts/fooargs.sh for development phase.
# If not set in common.env, it must be set in the host machine environment
# when ./start.sh or ./test.sh or in development phase.
# ----------------------
# Values in default (no-arg) production mode
# May be overriden in docker-compose.yml
#-----------------------
ARG CAKEPHP_DEBUG_LEVEL
ENV CAKEPHP_DEBUG_LEVEL=${CAKEPHP_DEBUG_LEVEL:-2}
ARG BALENA_MACHINE_NAME
ENV BALENA_MACHINE_NAME=${BALENA_MACHINE_NAME:-"%%BALENA_MACHINE_NAME%%"}
ARG SECONDARY_HUB
ENV SECONDARY_HUB=${SECONDARY_HUB:-"%%SECONDARY_HUB%%"}
ARG BALENA_ARCH
ENV BALENA_ARCH=${BALENA_ARCH:-"%%BALENA_ARCH%%"}
ARG PHP_EXTENSIONS
ENV PHP_EXTENSIONS=${PHP_EXTENSIONS:-"%%PHP_EXTENSIONS%%"}
ARG COLLECT_COVERAGE
ENV COLLECT_COVERAGE=${COLLECT_COVERAGE:-"False"}
ARG MYPHPCMS_DIR
ENV MYPHPCMS_DIR=${MYPHPCMS_DIR:-"app/webroot/php-cms"}
ARG MYPHPCMS_LOG
ENV MYPHPCMS_LOG=${MYPHPCMS_LOG:-"app/tmp/logs"}
# Enable migrate-database.sh options
ARG MIGRATE_OPTION
ENV MIGRATE_OPTION=${MIGRATE_OPTION:-"-v"}
# Database connection
ARG DB
ENV DB=${DB:-Mysql}
ARG MYSQL_HOST
ENV MYSQL_HOST=${MYSQL_HOST:-"db"}
ARG MYSQL_TCP_PORT
ENV MYSQL_TCP_PORT=${MYSQL_TCP_PORT:-3306}
ARG MYSQL_DATABASE
ENV MYSQL_DATABASE=${MYSQL_DATABASE:-"aria_db"}
ARG MYSQL_ROOT_PASSWORD
ENV MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-"mariadb"}
ARG TEST_MYSQL_DATABASE
ENV TEST_MYSQL_DATABASE=${TEST_MYSQL_DATABASE:-"test"}
ARG MYSQL_USER
ENV MYSQL_USER=${MYSQL_USER:-"maria"}
ARG MYSQL_PASSWORD
ENV MYSQL_PASSWORD=${MYSQL_PASSWORD:-"maria-abc"}
ARG HASH_PASSWORD
ENV HASH_PASSWORD=${HASH_PASSWORD:-"password"}
# Install necessary PHP extensions and dependencies
COPY --from=ghcr.io/mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
RUN install-php-extensions ${PHP_EXTENSIONS} \
gd \
intl \
mysqli \
odbc \
opcache \
pcntl \
pdo_mysql
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
# php-fpm configuration install
COPY php-ini-overrides.ini /usr/local/etc/php/99-overrides.ini
COPY etc/php-fpm.d /usr/local/etc/php-fpm.d
# add dedicated user
RUN addgroup -g $GUID acake2php \
&& adduser -h $PWD -G acake2php -D -u $PUID acake2php
# Copy application files
COPY --chown=acake2php:acake2php . .
# Run initialization scripts
RUN chmod +x Scripts/*.sh \
&& git init \
&& git config --global user.email "b23prodtm@users.sourceforge.net" \
&& git config --global user.name "B R T" \
&& git config --global --add safe.directory $PWD \
&& ./deploy.sh ${BALENA_ARCH} --no-build \
&& ./configure.sh --runner -p ${HASH_PASSWORD} -s "$(openssl rand -hex 4)" --development \
&& ./migrate-database.sh -r -i -u ${MIGRATE_OPTION} \
&& ./migrate-database.sh -r -u ${MIGRATE_OPTION} --connection=test
# As set in /etc/php-fpm.d/
EXPOSE 9001
RUN php-fpm -t
ENTRYPOINT ["php-fpm", "-F"]