-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
147 lines (125 loc) · 5.46 KB
/
Copy pathDockerfile
File metadata and controls
147 lines (125 loc) · 5.46 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
142
143
144
145
146
147
# Multistage build args
ARG WP_CORE_VERSION="7.1.2"
ARG NODE_VERSION="20"
ARG THEME_TAG="v4.6.0"
ARG REDIRECTION_ZIP_FILE="redirection-5.10.1.zip"
ARG SMTP_MAILER_ZIP_FILE="smtp-mailer-1.1.28.zip"
ARG FORMINATOR_ZIP_FILE="forminator-pro-1.58.0.zip"
ARG OPENID_CONNECT_GENERIC_DIR="daggerhart-openid-connect-generic"
ARG OPENID_CONNECT_GENERIC_VERSION="3.11.3"
ARG OPENID_CONNECT_GENERIC_ZIP_FILE="${OPENID_CONNECT_GENERIC_DIR}-${OPENID_CONNECT_GENERIC_VERSION}.zip"
ARG DEFENDER_PRO_ZIP_FILE="defender-pro-6.3.0.zip"
ARG WPMU_DEV_DASHBOARD_ZIP_FILE="wpmu-dev-dashboard-5.0.3.zip"
# Download plugins from Google Cloud Storage
FROM google/cloud-sdk:alpine AS gcloud
RUN mkdir -p /cache
WORKDIR /cache
ARG GC_BUCKET_PLUGINS="wordpress-general/plugins"
ARG REDIRECTION_ZIP_FILE
ARG OPENID_CONNECT_GENERIC_ZIP_FILE
ARG SMTP_MAILER_ZIP_FILE
ARG FORMINATOR_ZIP_FILE
ARG DEFENDER_PRO_ZIP_FILE
ARG WPMU_DEV_DASHBOARD_ZIP_FILE
RUN --mount=type=secret,id=google_key gcloud auth activate-service-account --key-file=/run/secrets/google_key
RUN gsutil cp gs://${GC_BUCKET_PLUGINS}/openid-connect-generic/${OPENID_CONNECT_GENERIC_ZIP_FILE} . \
&& gsutil cp gs://${GC_BUCKET_PLUGINS}/smtp-mailer/${SMTP_MAILER_ZIP_FILE} . \
&& gsutil cp gs://${GC_BUCKET_PLUGINS}/defender-pro/${DEFENDER_PRO_ZIP_FILE} . \
&& gsutil cp gs://${GC_BUCKET_PLUGINS}/forminator-pro/${FORMINATOR_ZIP_FILE} . \
&& gsutil cp gs://${GC_BUCKET_PLUGINS}/wpmudev-updates/${WPMU_DEV_DASHBOARD_ZIP_FILE} . \
&& gsutil cp gs://${GC_BUCKET_PLUGINS}/redirection/${REDIRECTION_ZIP_FILE} .
# Main build
FROM wordpress:${WP_CORE_VERSION} AS wordpress
# WP Filesystem paths
ARG WP_LOG_ROOT=/var/log/wordpress
ARG WP_SRC_ROOT=/usr/src/wordpress
ARG WP_CONTENT_DIR=$WP_SRC_ROOT/wp-content
ARG WP_THEME_DIR=$WP_CONTENT_DIR/themes
ARG WP_PLUGIN_DIR=$WP_CONTENT_DIR/plugins
ARG WP_UPLOADS_DIR=$WP_CONTENT_DIR/uploads
# WP Filesystem env vars
ENV WP_LOG_ROOT=${WP_LOG_ROOT}
ENV WP_SRC_ROOT=${WP_SRC_ROOT}
ENV WP_UPLOADS_DIR=${WP_UPLOADS_DIR}
WORKDIR $WP_SRC_ROOT
# node setup
ARG NODE_VERSION
RUN apt-get update \
&& apt-get install -y ca-certificates curl gnupg \
&& mkdir -p /etc/apt/keyrings \
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_VERSION.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
# Install Composer Package Manager (theme needs Timber and Twig)
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Install debian packages
RUN apt-get update && apt-get install -y unzip git vim nodejs
# WP config
COPY wp-config-docker.php wp-config-docker.php
# Apache config
COPY .htaccess .htaccess
# Switch apache to use wp src
RUN set -eux; \
find /etc/apache2 -name '*.conf' -type f -exec sed -ri -e "s!/var/www/html!$PWD!g" -e "s!Directory /var/www/!Directory $PWD!g" '{}' +; \
cp -s wp-config-docker.php wp-config.php
# WP CLI
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
&& chmod +x wp-cli.phar \
&& mv wp-cli.phar /usr/local/bin/wp
# Install composer dependencies for theme and plugins
ENV COMPOSER_ALLOW_SUPERUSER=1;
COPY composer.json .
RUN composer install
# get our prebuilt theme
WORKDIR $WP_THEME_DIR
RUN rm -rf */
ARG THEME_TAG
ARG THEME_FILE="ucdlib-theme-wp-${THEME_TAG}.tar.gz"
RUN curl -OL https://github.com/UCDavisLibrary/ucdlib-theme-wp/releases/download/${THEME_TAG}/${THEME_FILE} \
&& tar -xzf ${THEME_FILE} \
&& rm ${THEME_FILE}
# remove default plugins and insert the plugins we downloaded from GCS
ARG OPENID_CONNECT_GENERIC_DIR
ARG OPENID_CONNECT_GENERIC_ZIP_FILE
ARG REDIRECTION_ZIP_FILE
ARG SMTP_MAILER_ZIP_FILE
ARG FORMINATOR_ZIP_FILE
ARG DEFENDER_PRO_ZIP_FILE
ARG WPMU_DEV_DASHBOARD_ZIP_FILE
WORKDIR $WP_PLUGIN_DIR
RUN rm -rf */ && rm -f hello.php
COPY src/plugins .
COPY --from=gcloud /cache/${OPENID_CONNECT_GENERIC_ZIP_FILE} .
COPY --from=gcloud /cache/${REDIRECTION_ZIP_FILE} .
COPY --from=gcloud /cache/${SMTP_MAILER_ZIP_FILE} .
COPY --from=gcloud /cache/${FORMINATOR_ZIP_FILE} .
COPY --from=gcloud /cache/${DEFENDER_PRO_ZIP_FILE} .
COPY --from=gcloud /cache/${WPMU_DEV_DASHBOARD_ZIP_FILE} .
RUN unzip ${OPENID_CONNECT_GENERIC_ZIP_FILE} && rm ${OPENID_CONNECT_GENERIC_ZIP_FILE} \
&& unzip ${SMTP_MAILER_ZIP_FILE} && rm ${SMTP_MAILER_ZIP_FILE} \
&& unzip ${DEFENDER_PRO_ZIP_FILE} && rm ${DEFENDER_PRO_ZIP_FILE} \
&& unzip ${FORMINATOR_ZIP_FILE} && rm ${FORMINATOR_ZIP_FILE} \
&& unzip ${WPMU_DEV_DASHBOARD_ZIP_FILE} && rm ${WPMU_DEV_DASHBOARD_ZIP_FILE} \
&& unzip ${REDIRECTION_ZIP_FILE} && rm ${REDIRECTION_ZIP_FILE}
RUN mv $OPENID_CONNECT_GENERIC_DIR openid-connect-generic
# Retrieve any custom plugins from github
RUN git -c advice.detachedHead=false \
clone https://github.com/UCDavisLibrary/forminator-theme-styles.git \
--branch v1.2.0 --single-branch --depth 1
# Copy our custom awards plugins
COPY src/plugins/aggie-open aggie-open
COPY src/plugins/graduate-student-prize graduate-student-prize
COPY src/plugins/lang-prize lang-prize
COPY src/plugins/ucdlib-awards ucdlib-awards
# build js
RUN cd ucdlib-awards/assets \
&& npm install \
&& npm run dist \
&& npm run dist-public \
&& rm -rf node_modules
# Back to site root so wordpress can do the rest of its thing
WORKDIR $WP_SRC_ROOT
# override docker entry point, so we can ensure apache can write to our volumes
COPY docker-entrypoint.sh /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
# start apache
CMD ["apache2-foreground"]