2020-07-06 10:44:47 +00:00
|
|
|
FROM ubuntu:20.04
|
2016-06-15 16:50:33 +00:00
|
|
|
|
2022-03-30 22:14:28 +00:00
|
|
|
# see https://github.com/moby/moby/issues/4032#issuecomment-192327844
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
|
|
|
2021-11-25 16:30:39 +00:00
|
|
|
# ARG for quick switch to a given ubuntu mirror
|
|
|
|
ARG apt_archive="http://archive.ubuntu.com"
|
2022-03-30 22:14:28 +00:00
|
|
|
RUN sed -i "s|http://archive.ubuntu.com|${apt_archive}|g" /etc/apt/sources.list \
|
|
|
|
&& groupadd -r clickhouse --gid=101 \
|
|
|
|
&& useradd -r -g clickhouse --uid=101 --home-dir=/var/lib/clickhouse --shell=/bin/bash clickhouse \
|
|
|
|
&& apt-get update \
|
|
|
|
&& apt-get install --yes --no-install-recommends \
|
|
|
|
apt-transport-https \
|
|
|
|
ca-certificates \
|
|
|
|
dirmngr \
|
|
|
|
gnupg \
|
|
|
|
locales \
|
|
|
|
wget \
|
2022-05-24 21:40:10 +00:00
|
|
|
tzdata \
|
2022-03-30 22:14:28 +00:00
|
|
|
&& apt-get clean
|
2021-11-25 16:30:39 +00:00
|
|
|
|
2022-03-30 22:14:28 +00:00
|
|
|
ARG REPO_CHANNEL="stable"
|
|
|
|
ARG REPOSITORY="deb https://packages.clickhouse.com/deb ${REPO_CHANNEL} main"
|
2023-02-03 13:00:13 +00:00
|
|
|
ARG VERSION="23.1.3.5"
|
2022-03-30 22:14:28 +00:00
|
|
|
ARG PACKAGES="clickhouse-client clickhouse-server clickhouse-common-static"
|
2018-09-21 22:00:57 +00:00
|
|
|
|
2021-03-29 14:27:01 +00:00
|
|
|
# set non-empty deb_location_url url to create a docker image
|
2021-03-22 13:31:14 +00:00
|
|
|
# from debs created by CI build, for example:
|
2022-08-27 00:18:47 +00:00
|
|
|
# docker build . --network host --build-arg version="21.4.1.6282" --build-arg deb_location_url="https://..." -t ...
|
2021-03-29 14:27:01 +00:00
|
|
|
ARG deb_location_url=""
|
2021-03-22 13:31:14 +00:00
|
|
|
|
2021-03-29 14:27:01 +00:00
|
|
|
# set non-empty single_binary_location_url to create docker image
|
2021-03-22 13:31:14 +00:00
|
|
|
# from a single binary url (useful for non-standard builds - with sanitizers, for arm64).
|
2021-03-29 14:27:01 +00:00
|
|
|
ARG single_binary_location_url=""
|
2021-03-22 13:31:14 +00:00
|
|
|
|
2021-01-15 17:58:51 +00:00
|
|
|
# user/group precreated explicitly with fixed uid/gid on purpose.
|
|
|
|
# It is especially important for rootless containers: in that case entrypoint
|
|
|
|
# can't do chown and owners of mounted volumes should be configured externally.
|
|
|
|
# We do that in advance at the begining of Dockerfile before any packages will be
|
|
|
|
# installed to prevent picking those uid / gid by some unrelated software.
|
|
|
|
# The same uid / gid (101) is used both for alpine and ubuntu.
|
|
|
|
|
2022-03-30 22:14:28 +00:00
|
|
|
ARG TARGETARCH
|
|
|
|
|
|
|
|
RUN arch=${TARGETARCH:-amd64} \
|
|
|
|
&& if [ -n "${deb_location_url}" ]; then \
|
|
|
|
echo "installing from custom url with deb packages: ${deb_location_url}" \
|
|
|
|
rm -rf /tmp/clickhouse_debs \
|
|
|
|
&& mkdir -p /tmp/clickhouse_debs \
|
|
|
|
&& for package in ${PACKAGES}; do \
|
|
|
|
{ wget --progress=bar:force:noscroll "${deb_location_url}/${package}_${VERSION}_${arch}.deb" -P /tmp/clickhouse_debs || \
|
|
|
|
wget --progress=bar:force:noscroll "${deb_location_url}/${package}_${VERSION}_all.deb" -P /tmp/clickhouse_debs ; } \
|
|
|
|
|| exit 1 \
|
|
|
|
; done \
|
|
|
|
&& dpkg -i /tmp/clickhouse_debs/*.deb ; \
|
|
|
|
elif [ -n "${single_binary_location_url}" ]; then \
|
|
|
|
echo "installing from single binary url: ${single_binary_location_url}" \
|
|
|
|
&& rm -rf /tmp/clickhouse_binary \
|
|
|
|
&& mkdir -p /tmp/clickhouse_binary \
|
|
|
|
&& wget --progress=bar:force:noscroll "${single_binary_location_url}" -O /tmp/clickhouse_binary/clickhouse \
|
|
|
|
&& chmod +x /tmp/clickhouse_binary/clickhouse \
|
|
|
|
&& /tmp/clickhouse_binary/clickhouse install --user "clickhouse" --group "clickhouse" ; \
|
|
|
|
else \
|
|
|
|
mkdir -p /etc/apt/sources.list.d \
|
|
|
|
&& apt-key adv --keyserver keyserver.ubuntu.com --recv 8919F6BD2B48D754 \
|
|
|
|
&& echo ${REPOSITORY} > /etc/apt/sources.list.d/clickhouse.list \
|
|
|
|
&& echo "installing from repository: ${REPOSITORY}" \
|
|
|
|
&& apt-get update \
|
|
|
|
&& apt-get --yes -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade \
|
|
|
|
&& for package in ${PACKAGES}; do \
|
2022-04-04 16:50:50 +00:00
|
|
|
packages="${packages} ${package}=${VERSION}" \
|
2022-03-30 22:14:28 +00:00
|
|
|
; done \
|
2022-04-04 16:50:50 +00:00
|
|
|
&& apt-get install --allow-unauthenticated --yes --no-install-recommends ${packages} || exit 1 \
|
2022-03-30 22:14:28 +00:00
|
|
|
; fi \
|
2021-03-22 13:31:14 +00:00
|
|
|
&& clickhouse-local -q 'SELECT * FROM system.build_options' \
|
2018-09-21 22:00:57 +00:00
|
|
|
&& rm -rf \
|
|
|
|
/var/lib/apt/lists/* \
|
|
|
|
/var/cache/debconf \
|
|
|
|
/tmp/* \
|
2021-01-21 17:25:09 +00:00
|
|
|
&& mkdir -p /var/lib/clickhouse /var/log/clickhouse-server /etc/clickhouse-server /etc/clickhouse-client \
|
|
|
|
&& chmod ugo+Xrw -R /var/lib/clickhouse /var/log/clickhouse-server /etc/clickhouse-server /etc/clickhouse-client
|
|
|
|
|
2022-10-24 16:35:18 +00:00
|
|
|
# Remove as much of Ubuntu as possible.
|
|
|
|
# ClickHouse does not need Ubuntu. It can run on top of Linux kernel without any OS distribution.
|
|
|
|
# ClickHouse does not need Docker at all. ClickHouse is above all that.
|
|
|
|
# It does not care about Ubuntu, Docker, or other cruft and you should neither.
|
|
|
|
# The fact that this Docker image is based on Ubuntu is just a misconception.
|
|
|
|
# Some vulnerability scanners are arguing about Ubuntu, which is not relevant to ClickHouse at all.
|
|
|
|
# ClickHouse does not care when you report false vulnerabilities by running some Docker scanners.
|
|
|
|
|
2022-11-13 04:12:25 +00:00
|
|
|
RUN apt-get remove --purge -y libksba8 && apt-get autoremove -y
|
2022-10-24 16:35:18 +00:00
|
|
|
|
2021-01-22 14:28:25 +00:00
|
|
|
# we need to allow "others" access to clickhouse folder, because docker container
|
2021-01-21 17:25:09 +00:00
|
|
|
# can be started with arbitrary uid (openshift usecase)
|
2016-06-15 16:50:33 +00:00
|
|
|
|
2018-12-10 15:23:21 +00:00
|
|
|
RUN locale-gen en_US.UTF-8
|
|
|
|
ENV LANG en_US.UTF-8
|
|
|
|
ENV LANGUAGE en_US:en
|
|
|
|
ENV LC_ALL en_US.UTF-8
|
2020-01-29 12:59:48 +00:00
|
|
|
ENV TZ UTC
|
2018-12-10 15:23:21 +00:00
|
|
|
|
2018-11-28 19:55:34 +00:00
|
|
|
RUN mkdir /docker-entrypoint-initdb.d
|
|
|
|
|
2018-01-22 07:51:27 +00:00
|
|
|
COPY docker_related_config.xml /etc/clickhouse-server/config.d/
|
2018-09-21 22:00:57 +00:00
|
|
|
COPY entrypoint.sh /entrypoint.sh
|
2021-04-30 13:27:31 +00:00
|
|
|
RUN chmod +x /entrypoint.sh
|
2016-06-15 16:50:33 +00:00
|
|
|
|
|
|
|
EXPOSE 9000 8123 9009
|
2017-02-28 17:12:45 +00:00
|
|
|
VOLUME /var/lib/clickhouse
|
2016-06-15 16:50:33 +00:00
|
|
|
|
|
|
|
ENV CLICKHOUSE_CONFIG /etc/clickhouse-server/config.xml
|
|
|
|
|
2018-09-21 22:00:57 +00:00
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|