Dockerfile 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. # SPDX-License-Identifier: GPL-3.0-or-later
  2. # author : paulfantom
  3. # Cross-arch building is achieved by specifying ARCH as a build parameter with `--build-arg` option.
  4. # It is automated in `build.sh` script
  5. ARG ARCH=amd64-v3.8
  6. FROM multiarch/alpine:${ARCH} as builder
  7. # Install prerequisites
  8. RUN apk --no-cache add alpine-sdk \
  9. autoconf \
  10. automake \
  11. bash \
  12. build-base \
  13. curl \
  14. jq \
  15. libmnl-dev \
  16. libuuid \
  17. lm_sensors \
  18. netcat-openbsd \
  19. nodejs \
  20. pkgconfig \
  21. py-mysqldb \
  22. py-psycopg2 \
  23. py-yaml \
  24. python \
  25. util-linux-dev \
  26. zlib-dev
  27. # Copy source
  28. COPY . /opt/netdata.git
  29. WORKDIR /opt/netdata.git
  30. # Install from source
  31. RUN chmod +x netdata-installer.sh && \
  32. sync && sleep 1 && \
  33. ./netdata-installer.sh --dont-wait --dont-start-it
  34. # files to one directory
  35. RUN mkdir -p /app/usr/sbin/ \
  36. /app/usr/share \
  37. /app/usr/libexec \
  38. /app/usr/lib \
  39. /app/var/cache \
  40. /app/var/lib \
  41. /app/etc && \
  42. mv /usr/share/netdata /app/usr/share/ && \
  43. mv /usr/libexec/netdata /app/usr/libexec/ && \
  44. mv /usr/lib/netdata /app/usr/lib/ && \
  45. mv /var/cache/netdata /app/var/cache/ && \
  46. mv /var/lib/netdata /app/var/lib/ && \
  47. mv /etc/netdata /app/etc/ && \
  48. mv /usr/sbin/netdata /app/usr/sbin/ && \
  49. mv docker/run.sh /app/usr/sbin/ && \
  50. chmod +x /app/usr/sbin/run.sh
  51. #####################################################################
  52. ARG ARCH
  53. FROM multiarch/alpine:${ARCH}
  54. # Reinstall some prerequisites
  55. RUN apk --no-cache add curl \
  56. fping \
  57. jq \
  58. libuuid \
  59. lm_sensors \
  60. netcat-openbsd \
  61. nodejs \
  62. py-mysqldb \
  63. py-psycopg2 \
  64. py-yaml \
  65. python
  66. # Copy files over
  67. COPY --from=builder /app /
  68. # Configure system
  69. ARG NETDATA_UID=201
  70. ARG NETDATA_GID=201
  71. RUN \
  72. # fping from alpine apk is on a different location. Moving it.
  73. mv /usr/sbin/fping /usr/local/bin/fping && \
  74. chmod 4755 /usr/local/bin/fping && \
  75. mkdir -p /var/log/netdata && \
  76. # Add netdata user
  77. addgroup -g ${NETDATA_GID} -S netdata && \
  78. adduser -S -H -s /usr/sbin/nologin -u ${NETDATA_GID} -h /etc/netdata -G netdata netdata && \
  79. # Apply the permissions as described in
  80. # https://github.com/netdata/netdata/wiki/netdata-security#netdata-directories
  81. chown -R root:netdata /etc/netdata && \
  82. chown -R netdata:netdata /var/cache/netdata /var/lib/netdata /usr/share/netdata && \
  83. chown -R root:netdata /usr/lib/netdata && \
  84. chown -R root:netdata /usr/libexec/netdata/plugins.d/apps.plugin /usr/libexec/netdata/plugins.d/cgroup-network && \
  85. chmod 4750 /usr/libexec/netdata/plugins.d/cgroup-network /usr/libexec/netdata/plugins.d/apps.plugin && \
  86. chmod 0750 /var/lib/netdata /var/cache/netdata && \
  87. # Link log files to stdout
  88. ln -sf /dev/stdout /var/log/netdata/access.log && \
  89. ln -sf /dev/stdout /var/log/netdata/debug.log && \
  90. ln -sf /dev/stderr /var/log/netdata/error.log
  91. ENV NETDATA_PORT 19999
  92. EXPOSE $NETDATA_PORT
  93. ENTRYPOINT ["/usr/sbin/run.sh"]