forked from CircleCI-Public/cimg-base
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.template
136 lines (121 loc) · 4.6 KB
/
Dockerfile.template
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
# vim:set ft=dockerfile:
# Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles.
FROM %%PARENT%%:%%VERSION_FULL%%
LABEL maintainer="Community & Partner Engineering Team <community-partner@circleci.com>"
# Change default shell for RUN from Dash to Bash
SHELL ["/bin/bash", "-exo", "pipefail", "-c"]
ENV DEBIAN_FRONTEND=noninteractive \
TERM=dumb \
PAGER=cat
# Configure environment
RUN echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/90circleci && \
echo 'DPkg::Options "--force-confnew";' >> /etc/apt/apt.conf.d/90circleci && \
apt-get update && apt-get install -y \
curl \
locales \
sudo \
&& \
locale-gen en_US.UTF-8 && \
rm -rf /var/lib/apt/lists/* && \
groupadd --gid=1002 circleci && \
useradd --uid=1001 --gid=circleci --create-home circleci && \
echo 'circleci ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-circleci && \
echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep && \
sudo -u circleci mkdir /home/circleci/project && \
sudo -u circleci mkdir /home/circleci/bin && \
sudo -u circleci mkdir -p /home/circleci/.local/bin && \
dockerizeArch=arm64 && \
if uname -p | grep "x86_64"; then \
dockerizeArch=x86_64; \
fi && \
curl -sSL --fail --retry 3 --output /usr/local/bin/dockerize "https://github.com/powerman/dockerize/releases/download/v0.8.0/dockerize-linux-${dockerizeArch}" && \
chmod +x /usr/local/bin/dockerize && \
dockerize --version
ENV PATH=/home/circleci/bin:/home/circleci/.local/bin:$PATH \
LANG=en_US.UTF-8 \
LANGUAGE=en_US:en \
LC_ALL=en_US.UTF-8
RUN noInstallRecommends="" && \
if [[ "%%VERSION_FULL%%" == "22.04" ]]; then \
noInstallRecommends="--no-install-recommends"; \
fi && \
apt-get update && apt-get install -y $noInstallRecommends \
autoconf \
build-essential \
ca-certificates \
cmake \
# already installed but here for consistency
curl \
gnupg \
gzip \
jq \
libcurl4-openssl-dev \
# popular DB lib - MariaDB
libmariadb-dev \
# allows MySQL users to use MariaDB lib
libmariadb-dev-compat \
# popular DB lib - PostgreSQL
libpq-dev \
libssl-dev \
libsqlite3-dev \
make \
# for ssh-enabled builds
nano \
net-tools \
netcat \
openssh-client \
parallel \
# compiling tool
pkg-config \
postgresql-client \
shellcheck \
software-properties-common \
# already installed but here for consistency
sudo \
tar \
tzdata \
unzip \
# for ssh-enabled builds
vim \
wget \
zip && \
add-apt-repository ppa:git-core/ppa && apt-get install -y git && \
rm -rf /var/lib/apt/lists/*
# Install Docker - needs the setup_remote_docker CircleCI step to work
ENV DOCKER_VERSION 5:20.10.18~3-0~ubuntu-
RUN apt-get update && apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $( lsb_release -cs ) stable" && \
apt-get install -y docker-ce=${DOCKER_VERSION}$( lsb_release -cs ) docker-ce-cli=${DOCKER_VERSION}$( lsb_release -cs ) containerd.io && \
# Quick test of the Docker install
docker --version && \
rm -rf /var/lib/apt/lists/*
# Install Docker Compose - see prerequisite above
ENV COMPOSE_VER 2.11.2
ENV COMPOSE_SWITCH_VERSION 1.0.5
RUN dockerPluginDir=/usr/local/lib/docker/cli-plugins && \
mkdir -p $dockerPluginDir && \
curl -sSL "https://github.com/docker/compose/releases/download/v${COMPOSE_VER}/docker-compose-linux-$(uname -m)" -o $dockerPluginDir/docker-compose && \
chmod +x $dockerPluginDir/docker-compose && \
curl -fL "https://github.com/docker/compose-switch/releases/download/v${COMPOSE_SWITCH_VERSION}/docker-compose-linux-$(dpkg --print-architecture)" -o /usr/local/bin/compose-switch && \
# Quick test of the Docker Compose install
docker compose version && \
chmod +x /usr/local/bin/compose-switch && \
update-alternatives --install /usr/local/bin/docker-compose docker-compose /usr/local/bin/compose-switch 99 && \
# Tests if docker-compose for v1 is transposed to v2
docker-compose version
RUN curl -sSL "https://github.com/mikefarah/yq/releases/download/v4.27.5/yq_linux_amd64.tar.gz" | \
tar -xz -C /usr/local/bin && \
mv /usr/local/bin/yq{_linux_amd64,}
USER circleci
# Run commands and tests as circleci user
RUN whoami && \
# opt-out of the new security feature, not needed in a CI environment
git config --global --add safe.directory '*'
# Match the default CircleCI working directory
WORKDIR /home/circleci/project