-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathDockerfile
More file actions
92 lines (78 loc) · 3.77 KB
/
Dockerfile
File metadata and controls
92 lines (78 loc) · 3.77 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
FROM ubuntu:22.04
ARG ACF_PRO_VERSION=latest
ARG WP_VERSION=latest
ARG MYSQL_USER="root"
ARG MYSQL_PASS="root"
ARG MYSQL_DATABASE_NAME="wp"
ARG WP_DB_TABLE_PREFIX="wp_"
ARG WP_INSTALLATION_DOMAIN="test.com"
ENV WP_INSTALL_DIR="/WP_INSTALL_DIR"
ENV MYSQL_USER=${MYSQL_USER}
ENV MYSQL_PASS=${MYSQL_PASS}
ENV MYSQL_DATABASE_NAME=${MYSQL_DATABASE_NAME}
ENV WP_DB_TABLE_PREFIX=${WP_DB_TABLE_PREFIX}
ENV WP_INSTALLATION_DOMAIN=${WP_INSTALLATION_DOMAIN}
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y \
curl \
mysql-server \
php-mysql \
php-cli \
php-gd \
php-curl \
php-zip \
php-dom \
php-simplexml \
php-xml \
php-mbstring \
php-xdebug
RUN echo "[mysqld]" >> /etc/mysql/my.cnf && \
echo "default_authentication_plugin=mysql_native_password" >> /etc/mysql/my.cnf && \
service mysql start && \
echo "CREATE USER '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASS}';" | mysql && \
echo "GRANT ALL PRIVILEGES ON *.* TO '${MYSQL_USER}'@'%' WITH GRANT OPTION;" | mysql && \
echo "CREATE DATABASE ${MYSQL_DATABASE_NAME};" | mysql && \
service mysql stop
SHELL ["/bin/bash", "-c"]
ENV WPCLI="${WP_INSTALL_DIR}/wp-cli.phar --allow-root --path=${WP_INSTALL_DIR}"
ENV WP_PLUGINS_DIR="${WP_INSTALL_DIR}/wp-content/plugins"
RUN echo Building image with Wordpress:${WP_VERSION} and ACF Pro plugin:${ACF_PRO_VERSION}
RUN service mysql start && mkdir -p ${WP_INSTALL_DIR} && \
cd ${WP_INSTALL_DIR} && curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && chmod +x ./wp-cli.phar && \
if [ "latest" = "${WP_VERSION}" ]; then ${WPCLI} core download; else ${WPCLI} core download --version="${WP_VERSION}"; fi && \
${WPCLI} config create --dbname=${MYSQL_DATABASE_NAME} --dbuser=${MYSQL_USER} --dbpass=${MYSQL_PASS} --dbprefix=${WP_DB_TABLE_PREFIX} && \
${WPCLI} core install --url=${WP_INSTALLATION_DOMAIN} --title=Test --admin_user=wp --admin_password=wp --admin_email=test@wp.org --skip-email && \
service mysql stop
ARG SITES="Spanish Site:es:es,French Site:fr-FR:fr,Russian Site:ru-RU:ru,Ukrainian Site:uk-UA:ua"
ARG ACFPRO_KEY
ARG GITHUB_OAUTH_TOKEN
ENV SITES=${SITES}
ENV DEPENDENCIES="smartling-connector;wordpress-seo"
ENV COMPOSER_H_DIR="${HOME}/.composer"
ENV PLUGIN_DIR="${WP_PLUGINS_DIR}/smartling-connector"
ENV LOCAL_GIT_DIR="/plugin-dir"
COPY Buildplan/boot.sh /boot.sh
RUN chmod +x /boot.sh
RUN service mysql start && cd ${WP_INSTALL_DIR} && \
if [ ! -d "${COMPOSER_H_DIR}" ]; then mkdir "${COMPOSER_H_DIR}"; fi; echo "{\"github-oauth\":{\"github.com\":\"$GITHUB_OAUTH_TOKEN\"}}" > "${COMPOSER_H_DIR}/auth.json" && \
${WPCLI} core multisite-convert && \
IFS=',' read -a array <<< "${SITES}"; for site in "${array[@]}"; do ${WPCLI} site create --slug="${site##*\:}" --title="${site%%\:*}" --email=test@wp.org; done && \
IFS=';' read -a array <<< "${DEPENDENCIES}"; for plugin_name in "${array[@]}"; do ${WPCLI} plugin install $plugin_name --activate-network; done && \
DLINK="https://connect.advancedcustomfields.com/index.php?a=download&p=pro&k=${ACFPRO_KEY}" && \
if [ "latest" != "${ACF_PRO_VERSION}" ]; then DLINK="${DLINK}&t=${ACF_PRO_VERSION}"; fi && \
BUILD_FQFN="${WP_INSTALL_DIR}/advanced-custom-fields-pro.zip" && \
curl ${DLINK} --output ${BUILD_FQFN} && \
${WPCLI} plugin install ${BUILD_FQFN} --activate-network && \
service mysql stop
CMD WP_INSTALL_DIR=${WP_INSTALL_DIR} \
PLUGIN_DIR=${PLUGIN_DIR} \
WPCLI=${WPCLI} \
WP_DB_USER=${MYSQL_USER} \
WP_DB_PASS=${MYSQL_PASS} \
WP_DB_NAME=${MYSQL_DATABASE_NAME} \
WP_DB_TABLE_PREFIX=${WP_DB_TABLE_PREFIX} \
WP_INSTALLATION_DOMAIN=${WP_INSTALLATION_DOMAIN} \
SITES=${SITES} \
LOCAL_GIT_DIR=${LOCAL_GIT_DIR} \
/boot.sh