-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
161 lines (146 loc) · 7.12 KB
/
Dockerfile
File metadata and controls
161 lines (146 loc) · 7.12 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
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
FROM ubuntu:22.04
LABEL Description="This image based on Ubuntu 22.04,provides a base development \
environment (Linux and Android) for Qt developers"
# Declare build parameters.
ARG QT_WEBKIT
ARG QT_WEBENGINE
ARG QT_VERSION
ARG TARGETARCH
ARG BUILD_TAG
ARG QTCREATOR_URL
ARG USER_ID
ARG GROUP_ID
ARG QTCREATOR_URL
ARG TZ
# Set environment variables, see Readme.md
# Allow colored output on command line.
ENV TERM=xterm-color
# +Timezone (если надо на этапе сборки)
ENV TZ=Europe/Moscow
# Add libusb dans library path
ENV LD_LIBRARY_PATH=/usr/local/lib
ENV xdg_runtime_dir=/run/user/"${USER_ID}"
ENV DISPLAY=:0
ENV PERSIST=1
ENV DEBIAN_FRONTEND="noninteractive"
ENV PS1="\u@${BUILD_TAG}:\w\$ "
ENV LANG=ru_RU.UTF-8
ENV LANGUAGE=ru_RU:ru
ENV LC_LANG=ru_RU.UTF-8
ENV LC_ALL=ru_RU.UTF-8
ENV HOME=/home/developer
#Troubleshooting
#Enabling the logging categories under qt.qpa is a good idea in general. This will show some debug prints both from eglfs and the input handlers.
#ENV QT_LOGGING_RULES=qt.qpa.*=true
ENV QT_HOST_PATH="/opt/Qt/${QT_VERSION}-amd64-lts-lgpl/:${QT_HOST_PATH}"
ENV QT_HOST_PATH="/opt/Qt/${QT_VERSION}-android-lts-lgpl/:${QT_HOST_PATH}"
ENV QT_PLUGIN_PATH="/opt/Qt/${QT_VERSION}-amd64-lts-lgpl/plugins:${QT_PLUGIN_PATH}"
ENV QT_PLUGIN_PATH="/opt/Qt/${QT_VERSION}-android-lts-lgpl/plugins:${QT_PLUGIN_PATH}"
ENV QML_IMPORT_PATH="/opt/Qt/${QT_VERSION}-amd64-lts-lgpl/qml:${QML_IMPORT_PATH}"
ENV QML_IMPORT_PATH="/opt/Qt/${QT_VERSION}-android-lts-lgpl/qml:${QML_IMPORT_PATH}"
ENV QML2_IMPORT_PATH="/opt/Qt/${QT_VERSION}-amd64-lts-lgpl/qml:${QML2_IMPORT_PATH}"
ENV QML2_IMPORT_PATH="/opt/Qt/${QT_VERSION}-android-lts-lgpl/qml:${QML2_IMPORT_PATH}"
ENV QT_QPA_FONTDIR="/usr/share/fonts/truetype"
ENV OPENSSL_ROOT_DIR="/opt/android_openssl/ssl_1.1"
ENV JAVA_HOME=/opt/java/openjdk
ENV JRE_CACERTS_PATH=/opt/java/openjdk/lib/security/cacerts
ENV JAVA_VERSION="jdk-17.0.13"
ENV PATH="/opt/cmake/bin:${PATH}"
ENV PATH="${JAVA_HOME}/bin:${PATH}"
ENV PATH="/opt/Qt/${QT_VERSION}-amd64-lts-lgpl/bin:${PATH}"
ENV PATH="/opt/Qt/${QT_VERSION}-android-lts-lgpl/bin:${PATH}"
ENV PATH="/opt/qt-creator/bin:${PATH}"
ENV ANDROID_HOME="/opt/android-sdk"
ENV ANDROID_SDK_ROOT="${ANDROID_HOME}"
ENV ANDROID_NDK_ROOT="${ANDROID_HOME}/ndk/21.3.6528147"
ENV ANDROID_NDK_PLATFORM=android-21
ENV ANDROID_API_VERSION=android-30
ENV ANDROID_BUILD_TOOLS_REVISION=30.0.3
ENV QT_WEBKIT=${QT_WEBKIT:-"n"}
ENV QT_WEBENGINE=${QT_WEBENGINE:-"n"}
RUN set -eux; \
export LANG=en_EN.UTF-8 ;\
echo "go-faster apt"; \
echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/90nolanguages;\
echo 'APT::Get::Install-Recommends "false";'> /etc/apt/apt.conf.d/99nosuggest;\
echo 'APT::Get::Install-Suggests "false";' >> /etc/apt/apt.conf.d/99nosuggest;\
export DEBIAN_FRONTEND=noninteractive ;\
apt-get -y update ;\
apt-get -y upgrade ;\
echo "Build essentials for ubuntu/debian" ;\
apt-get -y install build-essential perl python3 ccache ;\
echo "Ninja build tools"; \
apt-get install ninja-build ;\
echo "Other cpp tools"; \
apt-get install -y cppcheck graphviz doxygen git meld gdb lldb clang-format autoconf;\
echo "Other debug tools"; \
apt-get install -y strace;\
echo "Memory leaks cpp tools"; \
apt-get install -y valgrind;\
echo "Fontconfig library"; \
apt-get install -y libfontconfig1-dev fontconfig;\
echo "Crypto tools"; \
apt-get install -y apt-transport-https ca-certificates gnupg libssl3 openssl ;\
echo "#Install some libs";\
apt-get install -y locales libncurses5 libdouble-conversion3 libc6 libc-bin libicu70 libtool xmlstarlet;\
echo "Libxcb packets" ;\
apt-get -y install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev \
libxcb-xinerama0-dev libxcb-xinput-dev libxcb-xkb-dev libxkbfile-dev ;\
echo "Mesa-specific OpenGL extensions" ;\
apt-get -y install mesa-common-dev libgl1-mesa-dev ;\
echo "Qt Multimedia You'll need at least alsa-lib [>= 1.0.15] and gstreamer [>=0.10.24] with the base-plugins package." ;\
apt-get -y install pulseaudio libpulse-dev ; \
apt-get -y install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev ;\
apt-get -y install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav ; \
echo "QDoc Documentation Generator Tool Ubuntu/Debian " ;\
apt-get -y install clang libclang-dev ;\
if [ "$QT_WEBKIT" = "y" ]; then \
echo "Qt WebKit Ubuntu/Debian" >>/root/installed_deb.log;\
apt-get -y install flex bison gperf libicu-dev libxslt-dev ruby; \
fi; \
if [ "$QT_WEBENGINE" = "y" ]; then \
echo "Qt WebEngine Ubuntu/Debian" ;\
apt-get -y install libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libxtst-dev libxss-dev libdbus-1-dev libevent-dev \
libcap-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libegl1-mesa-dev \
gperf bison nodejs; \
fi; \
echo "Auth Tool Ubuntu/Debian " ;\
apt-get -y install sudo nano mc ;\
apt-get -y install wget unzip ;\
echo "Add small X11 tools Ubuntu/Debian " ;\
apt-get -y install xprintidle ;\
echo "Install the BlueZ development headers and D-Bus development packages" ;\
apt-get install -y libbluetooth-dev bluez libdbus-1-dev ;\
apt-get clean -y && rm -rf /var/lib/apt/lists/*
#Чтобы внутри контейнера работал отладчик, добавил это, решение взял отсюда
#https://askubuntu.com/questions/41629/after-upgrade-gdb-wont-attach-to-process
#RUN echo 0 > /etc/sysctl.d/10-ptrace.conf
RUN echo "/usr/local/lib" >> /etc/ld.so.conf.d/x86_64-linux-gnu.conf &&\
echo "/opt/Qt/${QT_VERSION}-amd64-lts-lgpl/lib" >> /etc/ld.so.conf.d/x86_64-linux-gnu.conf &&\
echo "/opt/Qt/${QT_VERSION}-android-lts-lgpl/lib" >> /etc/ld.so.conf.d/x86_64-linux-gnu.conf &&\
/sbin/ldconfig &&\
echo "Generate locale" &&\
sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen &&\
locale-gen &&\
echo "Setup timezone" &&\
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&\
echo $TZ > /etc/timezone &&\
if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \
echo "Create user developer ${USER_ID}:${GROUP_ID} " &&\
groupadd -g ${GROUP_ID} developer &&\
useradd -u ${USER_ID} -g ${GROUP_ID} developer &&\
install -d -m 0755 -o developer -g ${GROUP_ID} /home/developer &&\
adduser developer sudo &&\
echo "adding user developer to audio group" &&\
adduser developer audio &&\
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers &&\
mkdir -p /home/developer &&\
cp /etc/skel/.profile /etc/skel/.bashrc /home/developer &&\
chmod 644 /home/developer/.profile /home/developer/.bashrc &&\
chown ${USER_ID}:${GROUP_ID} -R /home/developer &&\
echo "finished installing" ;\
fi
COPY --from=eclipse-temurin:17 $JAVA_HOME $JAVA_HOME
USER developer
WORKDIR /home/developer
ENTRYPOINT [ "/bin/bash", "-l", "-c" ]