Skip to content

Commit 91dc61a

Browse files
kraftbjjboland88
authored andcommitted
Dev Docker: add php extensions needed for unit testing and code coverage (#41409)
* Add additional ext needed for WordPress [unit testing] and code coverage * Other additions from 41057 originally * condense the build steps in attempt to make building more reliable * Move pnpm_home declaration to avoid docker build warning * Update needed packages * Re-allow rec packages
1 parent 018db62 commit 91dc61a

File tree

1 file changed

+35
-40
lines changed

1 file changed

+35
-40
lines changed

tools/docker/Dockerfile.monorepo

+35-40
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,34 @@ ARG COMPOSER_VERSION
66
ARG NODE_VERSION
77
ARG PNPM_VERSION
88

9+
ARG DEBIAN_FRONTEND=noninteractive
10+
911
ENV LANG=en_US.UTF-8 \
1012
LC_ALL=en_US.UTF-8 \
11-
JETPACK_MONOREPO_ENV=1
13+
JETPACK_MONOREPO_ENV=1 \
14+
PNPM_HOME=/usr/local/pnpm \
15+
PATH="/usr/local/pnpm:${PATH}" \
16+
npm_config_update_notifier=false
1217

1318
WORKDIR /app
1419

15-
# Install basic packages and PHP
20+
# Combine all repository setup, package installation, and cleanup into one layer
1621
RUN --mount=type=cache,target=/var/lib/apt/lists/,sharing=private \
17-
export DEBIAN_FRONTEND=noninteractive \
18-
&& apt-get update \
19-
&& apt-get install -y curl gpg language-pack-en-base ca-certificates \
20-
# Install software-properties-common without recommended packages to avoid Python issues
21-
&& apt-get install -y --no-install-recommends software-properties-common \
22+
# Setup repositories and keys
23+
apt-get update && apt-get install -y curl gpg language-pack-en-base ca-certificates \
24+
software-properties-common \
2225
&& add-apt-repository ppa:ondrej/php \
2326
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
2427
# Add Docker's official GPG key
2528
&& install -m 0755 -d /etc/apt/keyrings \
2629
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc \
2730
&& chmod a+r /etc/apt/keyrings/docker.asc \
28-
# Add Docker repository
29-
&& echo \
30-
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
31-
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
32-
tee /etc/apt/sources.list.d/docker.list > /dev/null \
31+
# Add repositories
32+
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
33+
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \
34+
&& N=${NODE_VERSION%%.*} \
35+
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$N.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
36+
# Install all packages
3337
&& apt-get update \
3438
&& apt-get --purge install -y \
3539
git \
@@ -41,35 +45,37 @@ RUN --mount=type=cache,target=/var/lib/apt/lists/,sharing=private \
4145
jq \
4246
"php${PHP_VERSION}" \
4347
"php${PHP_VERSION}-ast" \
48+
"php${PHP_VERSION}-bcmath" \
4449
"php${PHP_VERSION}-cli" \
4550
"php${PHP_VERSION}-curl" \
4651
"php${PHP_VERSION}-dom" \
52+
"php${PHP_VERSION}-gd" \
53+
"php${PHP_VERSION}-igbinary" \
54+
"php${PHP_VERSION}-imagick" \
55+
"php${PHP_VERSION}-intl" \
4756
"php${PHP_VERSION}-mbstring" \
57+
"php${PHP_VERSION}-mysqli" \
58+
"php${PHP_VERSION}-pcov" \
4859
"php${PHP_VERSION}-xml" \
4960
"php${PHP_VERSION}-zip" \
5061
rsync \
62+
locales \
63+
"nodejs$(apt-cache show nodejs | sed -n "/^Version: ${NODE_VERSION}-/ { s/^Version: /=/p; q }" )" \
64+
# Cleanup
5165
&& apt-get remove --purge -y python3-apt \
5266
&& apt-get remove --purge --auto-remove -y gpg software-properties-common \
53-
&& apt-get clean \
54-
&& find /var/ -name '*-old' -delete && rm -rf /var/log/dpkg.log /var/log/alternatives.log /var/log/apt/ ~/.launchpadlib
67+
&& find /var/ -name '*-old' -delete \
68+
&& rm -rf /var/log/dpkg.log /var/log/alternatives.log /var/log/apt/ ~/.launchpadlib
5569

5670
# Install Composer
5771
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
5872
&& php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=$COMPOSER_VERSION \
5973
&& php -r "unlink('composer-setup.php');"
6074

61-
# Install Node.js
62-
RUN --mount=type=cache,target=/var/lib/apt/lists/,sharing=private \
63-
export DEBIAN_FRONTEND=noninteractive \
64-
&& N=${NODE_VERSION%%.*} \
65-
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$N.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
66-
&& apt-get -q update \
67-
&& VER="$(apt-cache show nodejs | sed -n "/^Version: ${NODE_VERSION}-/ { s/^Version: /=/p; q }" )" \
68-
&& apt-get install -y nodejs$VER \
69-
&& apt-get clean \
70-
&& find /var/ -name '*-old' -delete && rm -rf /var/log/dpkg.log /var/log/alternatives.log /var/log/apt/ ~/.launchpadlib
75+
# Set up PNPM global directory
76+
RUN mkdir -p "${PNPM_HOME}" \
77+
&& chmod 777 "${PNPM_HOME}"
7178

72-
# Install pnpm
7379
RUN npm install --global pnpm@$PNPM_VERSION \
7480
&& SHELL=/bin/bash pnpm setup
7581

@@ -79,22 +85,11 @@ WORKDIR /workspace
7985
COPY bin/monorepo-entrypoint.sh /usr/local/bin/
8086
RUN chmod +x /usr/local/bin/monorepo-entrypoint.sh
8187

82-
# Set up locale properly
83-
RUN apt-get update && apt-get install -y locales \
84-
&& locale-gen en_US.UTF-8 \
88+
# Set up locale
89+
RUN locale-gen en_US.UTF-8 \
8590
&& update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 \
86-
&& apt-get clean \
87-
&& find /var/ -name '*-old' -delete && rm -rf /var/log/dpkg.log /var/log/alternatives.log /var/log/apt/ ~/.launchpadlib
88-
89-
ENV LANG=en_US.UTF-8
90-
ENV LC_ALL=en_US.UTF-8
91-
92-
# Set up PNPM global directory
93-
ENV PNPM_HOME=/usr/local/pnpm
94-
ENV PATH="${PNPM_HOME}:${PATH}"
95-
96-
RUN mkdir -p "$PNPM_HOME" \
97-
&& chmod 777 "$PNPM_HOME"
91+
&& find /var/ -name '*-old' -delete \
92+
&& rm -rf /var/log/dpkg.log /var/log/alternatives.log /var/log/apt/ ~/.launchpadlib
9893

9994
ENTRYPOINT ["/usr/local/bin/monorepo-entrypoint.sh"]
10095
CMD ["bash"]

0 commit comments

Comments
 (0)