11FROM debian:bullseye-slim
22
3- # Tymczasowo przekieruj interaktywne dialogi podczas instalacji
3+ # Temporarily redirect interactive dialogs during installation
44ENV DEBIAN_FRONTEND=noninteractive
55
6- # Instalacja zależności
6+ # Install dependencies
7+ RUN apt-get update && apt-get install -y xvfb
78RUN apt-get update && apt-get install -y --no-install-recommends \
89 python3 python3-pip \
910 tigervnc-standalone-server \
@@ -31,70 +32,132 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
3132 unzip \
3233 && rm -rf /var/lib/apt/lists/*
3334
34- # Instalacja Chrome (nowy sposób dodania klucza )
35+ # Install Chrome (new way to add the key )
3536RUN set -eux; \
37+ echo '[DEBUG] Creating directory for Chrome GPG key...' ; \
3638 mkdir -p /etc/apt/keyrings; \
37- wget -qO /etc/apt/keyrings/google-linux-signing-key.gpg https://dl.google.com/linux/linux_signing_key.pub; \
39+ echo '[DEBUG] Downloading Chrome GPG key...' ; \
40+ wget -qO- https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor > /etc/apt/keyrings/google-linux-signing-key.gpg; \
41+ echo '[DEBUG] Adding Chrome repository to sources.list...' ; \
3842 echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-linux-signing-key.gpg] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list; \
43+ echo '[DEBUG] apt-get update' ; \
3944 apt-get update; \
40- apt-get install -y google-chrome-stable; \
41- rm -rf /var/lib/apt/lists/*
45+ echo '[DEBUG] Installing google-chrome-stable' ; \
46+ apt-get install -y --no-install-recommends google-chrome-stable; \
47+ echo '[DEBUG] apt-get clean' ; \
48+ apt-get clean; \
49+ echo '[DEBUG] Cleaning apt cache' ; \
50+ rm -rf /var/lib/apt/lists/*; \
51+ echo '[DEBUG] Chrome installation completed.'
4252
43- # Instalacja Firefox
44- RUN apt-get update && apt-get install -y --no-install-recommends \
53+ # Install Firefox
54+ RUN echo '[DEBUG] Installing Firefox...' ; \
55+ apt-get update && apt-get install -y --no-install-recommends \
4556 firefox-esr \
46- && rm -rf /var/lib/apt/lists/*
57+ && rm -rf /var/lib/apt/lists/*; \
58+ echo '[DEBUG] Firefox installation completed.'
4759
48- # Instalacja ChromeDriver z fallbackiem na najnowszą wersję
60+ # Install ChromeDriver with better fallback mechanism
61+ # Install ChromeDriver with improved fallback mechanism
4962RUN set -eux; \
50- CHROME_VERSION=$(google-chrome --version | awk '{print $3}' | cut -d '.' -f 1); \
51- CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION}" || curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE); \
52- wget -q "https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip" ; \
53- unzip chromedriver_linux64.zip -d /usr/local/bin; \
54- rm chromedriver_linux64.zip; \
55- chmod +x /usr/local/bin/chromedriver
63+ echo '[DEBUG] Installing ChromeDriver...' ; \
64+ CHROME_VERSION=$(google-chrome --version | awk '{print $3}' ); \
65+ CHROME_MAJOR_VERSION=$(echo $CHROME_VERSION | cut -d '.' -f 1); \
66+ echo "[DEBUG] Detected Chrome version: ${CHROME_VERSION} (Major: ${CHROME_MAJOR_VERSION})" ; \
67+ if curl -s -f "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION}" > /dev/null; then \
68+ CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION}" ); \
69+ echo "[DEBUG] Found matching ChromeDriver version: ${CHROMEDRIVER_VERSION}" ; \
70+ else \
71+ echo "[DEBUG] No specific ChromeDriver for Chrome ${CHROME_MAJOR_VERSION}, using latest release" ; \
72+ CHROMEDRIVER_VERSION=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE" ); \
73+ if [ -z "$CHROMEDRIVER_VERSION" ] || [[ "$CHROMEDRIVER_VERSION" == *"<?xml" * ]]; then \
74+ echo "[DEBUG] Failed to get latest release, using fixed version" ; \
75+ CHROMEDRIVER_VERSION="114.0.5735.90" ; \
76+ fi; \
77+ fi; \
78+ echo "[DEBUG] Using ChromeDriver version: ${CHROMEDRIVER_VERSION}" ; \
79+ # Try downloading from the standard location
80+ if wget -q --spider "https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip" ; then \
81+ wget -q "https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip" ; \
82+ # Try alternative location (newer Chrome versions)
83+ elif wget -q --spider "https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/${CHROMEDRIVER_VERSION}/linux64/chromedriver-linux64.zip" ; then \
84+ wget -q "https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/${CHROMEDRIVER_VERSION}/linux64/chromedriver-linux64.zip" -O chromedriver_linux64.zip; \
85+ # Fall back to known working version
86+ else \
87+ echo "[DEBUG] Falling back to known working version 114.0.5735.90" ; \
88+ wget -q "https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux64.zip" ; \
89+ fi; \
90+ # Handle different archive structures
91+ mkdir -p /tmp/chromedriver; \
92+ unzip -q chromedriver_linux64.zip -d /tmp/chromedriver; \
93+ if [ -f /tmp/chromedriver/chromedriver ]; then \
94+ mv /tmp/chromedriver/chromedriver /usr/local/bin/; \
95+ elif [ -d /tmp/chromedriver/chromedriver-linux64 ]; then \
96+ mv /tmp/chromedriver/chromedriver-linux64/chromedriver /usr/local/bin/; \
97+ else \
98+ find /tmp/chromedriver -name "chromedriver" -type f -exec mv {} /usr/local/bin/ \; ; \
99+ fi; \
100+ rm -rf /tmp/chromedriver chromedriver_linux64.zip; \
101+ chmod +x /usr/local/bin/chromedriver; \
102+ echo '[DEBUG] ChromeDriver installation completed.'
56103
57- # Instalacja GeckoDriver (Firefox)
104+ # Install GeckoDriver (Firefox)
58105RUN set -eux; \
59- GECKO_DRIVER_VERSION=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | grep tag_name | cut -d '"' -f 4); \
106+ echo '[DEBUG] Installing jq for parsing JSON...' ; \
107+ apt-get update && apt-get install -y jq && rm -rf /var/lib/apt/lists/*; \
108+ echo '[DEBUG] Installing GeckoDriver...' ; \
109+ GECKO_DRIVER_VERSION=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | jq -r .tag_name); \
110+ echo "[DEBUG] GeckoDriver version: $GECKO_DRIVER_VERSION" ; \
60111 wget -q "https://github.com/mozilla/geckodriver/releases/download/${GECKO_DRIVER_VERSION}/geckodriver-${GECKO_DRIVER_VERSION}-linux64.tar.gz" ; \
61112 tar -xzf "geckodriver-${GECKO_DRIVER_VERSION}-linux64.tar.gz" -C /usr/local/bin; \
62113 rm "geckodriver-${GECKO_DRIVER_VERSION}-linux64.tar.gz" ; \
63- chmod +x /usr/local/bin/geckodriver
114+ chmod +x /usr/local/bin/geckodriver; \
115+ echo '[DEBUG] GeckoDriver installation completed.'
64116
65- # Instalacja menedżerów haseł CLI
66- RUN curl -fsSL https://get.bitwarden.com/sh | bash
117+ # Install CLI password managers
118+ RUN echo '[DEBUG] Installing Bitwarden CLI...' ; \
119+ curl -fsSL https://get.bitwarden.com/sh | bash; \
120+ echo '[DEBUG] Bitwarden CLI installation completed.'
67121
68- # Tworzymy strukturę katalogów
69- RUN mkdir -p /app/cv /app/config /app/passwords /app/recordings /app/scripts \
122+ # Create directory structure
123+ RUN echo '[DEBUG] Creating application directory structure...' ; \
124+ mkdir -p /app/cv /app/config /app/passwords /app/recordings /app/scripts \
70125 && mkdir -p /opt/scripts \
71126 && mkdir -p /root/.vnc \
72- && mkdir -p /var/log/supervisor
127+ && mkdir -p /var/log/supervisor; \
128+ echo '[DEBUG] Directory structure created.'
73129
74- # Kopiowanie skryptów
130+ # Copy scripts
75131COPY scripts/ /opt/scripts/
76- RUN chmod +x /opt/scripts/*.sh
132+ RUN echo '[DEBUG] Setting execution permissions for .sh scripts...' ; \
133+ chmod +x /opt/scripts/*.sh; \
134+ echo '[DEBUG] .sh scripts have execution permissions.'
77135
78- # Kopiowanie plików konfiguracyjnych
136+ # Copy configuration files
79137COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
138+ RUN echo '[DEBUG] Copied supervisord.conf configuration file.'
80139
81- # Instalacja zależności Pythona
140+ # Install Python dependencies
82141COPY requirements.txt /app/
83- RUN pip3 install --no-cache-dir -r /app/requirements.txt
142+ RUN echo '[DEBUG] Installing Python dependencies...' ; \
143+ pip3 install --no-cache-dir -r /app/requirements.txt; \
144+ echo '[DEBUG] Python dependencies installation completed.'
84145
85- # Konfiguracja TigerVNC
86- RUN mkdir -p /root/.vnc && \
146+ # Configure TigerVNC
147+ RUN echo '[DEBUG] Configuring TigerVNC...' ; \
148+ mkdir -p /root/.vnc && \
87149 echo "#!/bin/sh" > /root/.vnc/xstartup && \
88150 echo "xrdb $HOME/.Xresources" >> /root/.vnc/xstartup && \
89151 echo "startfluxbox &" >> /root/.vnc/xstartup && \
90- chmod +x /root/.vnc/xstartup
152+ chmod +x /root/.vnc/xstartup; \
153+ echo '[DEBUG] TigerVNC configuration completed.'
91154
92- # Ustawienie zmiennych środowiskowych
155+ # Set environment variables
93156ENV DISPLAY=:99
94157ENV PYTHONUNBUFFERED=1
95158
96- # Ekspozycja portu VNC
159+ # Expose VNC port
97160EXPOSE 5900
98161
99- # Uruchomienie supervisora
162+ # Run supervisor
100163CMD ["/usr/bin/supervisord" , "-c" , "/etc/supervisor/conf.d/supervisord.conf" ]
0 commit comments