Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 29 additions & 20 deletions Dockerfile-py3-win32
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
FROM ubuntu:16.04
FROM ubuntu:20.04

ENV DEBIAN_FRONTEND noninteractive
ENV DEBIAN_FRONTEND=noninteractive

ARG WINE_VERSION=winehq-staging
ARG PYTHON_VERSION=3.7.5
ARG PYINSTALLER_VERSION=3.6
ARG WINE_VERSION=winehq-stable
ARG PYTHON_VERSION=3.12.10
ARG PYINSTALLER_VERSION=6.16.0

# we need wine for this all to work, so we'll use the PPA
RUN set -x \
&& dpkg --add-architecture i386 \
&& apt-get update -qy \
&& apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget \
&& apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget xvfb xdotool x11-utils xterm gpg-agent rename \
&& wget -nv https://dl.winehq.org/wine-builds/winehq.key \
&& apt-key add winehq.key \
&& add-apt-repository 'https://dl.winehq.org/wine-builds/ubuntu/' \
Expand All @@ -22,9 +22,15 @@ RUN set -x \
&& mv winetricks /usr/local/bin

# wine settings
ENV WINEARCH win32
ENV WINEDEBUG fixme-all
ENV WINEPREFIX /wine
ENV WINEARCH=win32
ENV WINEDEBUG=fixme-all
ENV WINEPREFIX=/wine

# xvfb settings
# from https://github.com/engineervix/docker-pyinstaller/blob/b99163b6eb0a81fc9a0bfd498c09c4e0253d01b2/Dockerfile-py3-win64#L56-L59
ENV DISPLAY=:0
RUN set -x \
&& echo 'Xvfb $DISPLAY -screen 0 1024x768x24 &' >> /root/.bashrc

# PYPI repository location
ENV PYPI_URL=https://pypi.python.org/
Expand All @@ -35,19 +41,19 @@ ENV PYPI_INDEX_URL=https://pypi.python.org/simple
# the files directly, since installing isn't running correctly.
RUN set -x \
&& winetricks win7 \
&& for msifile in `echo core dev exe lib path pip tcltk tools`; do \
&& for msifile in `echo core dev exe lib path pip tcltk`; do \
wget -nv "https://www.python.org/ftp/python/$PYTHON_VERSION/win32/${msifile}.msi"; \
wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python37; \
wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python312; \
rm ${msifile}.msi; \
done \
&& cd /wine/drive_c/Python37 \
&& echo 'wine '\''C:\Python37\python.exe'\'' "$@"' > /usr/bin/python \
&& echo 'wine '\''C:\Python37\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \
&& echo 'wine '\''C:\Python37\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \
&& echo 'wine '\''C:\Python37\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \
&& echo 'wine '\''C:\Python37\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \
&& cd /wine/drive_c/Python312 \
&& echo 'wine '\''C:\Python312\python.exe'\'' "$@"' > /usr/bin/python \
&& echo 'wine '\''C:\Python312\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \
&& echo 'wine '\''C:\Python312\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \
&& echo 'wine '\''C:\Python312\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \
&& echo 'wine '\''C:\Python312\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \
&& echo 'assoc .py=PythonScript' | wine cmd \
&& echo 'ftype PythonScript=c:\Python37\python.exe "%1" %*' | wine cmd \
&& echo 'ftype PythonScript=c:\Python312\python.exe "%1" %*' | wine cmd \
&& while pgrep wineserver >/dev/null; do echo "Waiting for wineserver"; sleep 1; done \
&& chmod +x /usr/bin/python /usr/bin/easy_install /usr/bin/pip /usr/bin/pyinstaller /usr/bin/pyupdater \
&& (pip install -U pip || true) \
Expand All @@ -61,14 +67,17 @@ ENV W_TMP="$W_DRIVE_C/windows/temp/_$0"
# install Microsoft Visual C++ Redistributable for Visual Studio 2017 dll files
RUN set -x \
&& rm -f "$W_TMP"/* \
&& wget -P "$W_TMP" https://download.visualstudio.microsoft.com/download/pr/11687613/88b50ce70017bf10f2d56d60fcba6ab1/VC_redist.x86.exe \
&& cabextract -q --directory="$W_TMP" "$W_TMP"/VC_redist.x86.exe \
&& wget -P "$W_TMP" https://aka.ms/vs/16/release/vc_redist.x86.exe \
&& ls "$W_TMP"/ \
&& cabextract -q --directory="$W_TMP" "$W_TMP"/vc_redist.x86.exe \
&& cabextract -q --directory="$W_TMP" "$W_TMP/a10" \
&& cabextract -q --directory="$W_TMP" "$W_TMP/a11" \
&& cd "$W_TMP" \
&& rename 's/_/\-/g' *.dll \
&& cp "$W_TMP"/*.dll "$W_SYSTEM_DLLS"/

RUN ls /wine/drive_c/Python312

# install pyinstaller
RUN /usr/bin/pip install pyinstaller==$PYINSTALLER_VERSION

Expand Down
52 changes: 31 additions & 21 deletions Dockerfile-py3-win64
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
FROM ubuntu:16.04
FROM ubuntu:20.04

ENV DEBIAN_FRONTEND noninteractive
ENV DEBIAN_FRONTEND=noninteractive

ARG WINE_VERSION=winehq-staging
ARG PYTHON_VERSION=3.7.5
ARG PYINSTALLER_VERSION=3.6
ARG WINE_VERSION=winehq-stable
ARG PYTHON_VERSION=3.12.10
ARG PYINSTALLER_VERSION=6.16.0

# we need wine for this all to work, so we'll use the PPA
RUN set -x \
&& dpkg --add-architecture i386 \
&& apt-get update -qy \
&& apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget \
&& apt-get install --no-install-recommends -qfy apt-transport-https software-properties-common wget xvfb xdotool x11-utils xterm gpg-agent rename \
&& wget -nv https://dl.winehq.org/wine-builds/winehq.key \
&& apt-key add winehq.key \
&& add-apt-repository 'https://dl.winehq.org/wine-builds/ubuntu/' \
Expand All @@ -22,9 +22,15 @@ RUN set -x \
&& mv winetricks /usr/local/bin

# wine settings
ENV WINEARCH win64
ENV WINEDEBUG fixme-all
ENV WINEPREFIX /wine
ENV WINEARCH=win64
ENV WINEDEBUG=fixme-all
ENV WINEPREFIX=/wine

# xvfb settings
# from https://github.com/engineervix/docker-pyinstaller/blob/b99163b6eb0a81fc9a0bfd498c09c4e0253d01b2/Dockerfile-py3-win64#L56-L59
ENV DISPLAY=:0
RUN set -x \
&& echo 'Xvfb $DISPLAY -screen 0 1024x768x24 &' >> /root/.bashrc

# PYPI repository location
ENV PYPI_URL=https://pypi.python.org/
Expand All @@ -35,19 +41,19 @@ ENV PYPI_INDEX_URL=https://pypi.python.org/simple
# the files directly, since installing isn't running correctly.
RUN set -x \
&& winetricks win7 \
&& for msifile in `echo core dev exe lib path pip tcltk tools`; do \
&& for msifile in `echo core dev exe lib path pip tcltk`; do \
wget -nv "https://www.python.org/ftp/python/$PYTHON_VERSION/amd64/${msifile}.msi"; \
wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python37; \
wine msiexec /i "${msifile}.msi" /qb TARGETDIR=C:/Python312; \
rm ${msifile}.msi; \
done \
&& cd /wine/drive_c/Python37 \
&& echo 'wine '\''C:\Python37\python.exe'\'' "$@"' > /usr/bin/python \
&& echo 'wine '\''C:\Python37\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \
&& echo 'wine '\''C:\Python37\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \
&& echo 'wine '\''C:\Python37\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \
&& echo 'wine '\''C:\Python37\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \
&& cd /wine/drive_c/Python312 \
&& echo 'wine '\''C:\Python312\python.exe'\'' "$@"' > /usr/bin/python \
&& echo 'wine '\''C:\Python312\Scripts\easy_install.exe'\'' "$@"' > /usr/bin/easy_install \
&& echo 'wine '\''C:\Python312\Scripts\pip.exe'\'' "$@"' > /usr/bin/pip \
&& echo 'wine '\''C:\Python312\Scripts\pyinstaller.exe'\'' "$@"' > /usr/bin/pyinstaller \
&& echo 'wine '\''C:\Python312\Scripts\pyupdater.exe'\'' "$@"' > /usr/bin/pyupdater \
&& echo 'assoc .py=PythonScript' | wine cmd \
&& echo 'ftype PythonScript=c:\Python37\python.exe "%1" %*' | wine cmd \
&& echo 'ftype PythonScript=c:\Python312\python.exe "%1" %*' | wine cmd \
&& while pgrep wineserver >/dev/null; do echo "Waiting for wineserver"; sleep 1; done \
&& chmod +x /usr/bin/python /usr/bin/easy_install /usr/bin/pip /usr/bin/pyinstaller /usr/bin/pyupdater \
&& (pip install -U pip || true) \
Expand All @@ -61,14 +67,18 @@ ENV W_TMP="$W_DRIVE_C/windows/temp/_$0"
# install Microsoft Visual C++ Redistributable for Visual Studio 2017 dll files
RUN set -x \
&& rm -f "$W_TMP"/* \
&& wget -P "$W_TMP" https://download.visualstudio.microsoft.com/download/pr/11100230/15ccb3f02745c7b206ad10373cbca89b/VC_redist.x64.exe \
&& cabextract -q --directory="$W_TMP" "$W_TMP"/VC_redist.x64.exe \
&& cabextract -q --directory="$W_TMP" "$W_TMP/a10" \
&& wget -P "$W_TMP" https://aka.ms/vs/16/release/vc_redist.x64.exe \
&& ls "$W_TMP"/ \
&& cabextract -q --directory="$W_TMP" "$W_TMP"/vc_redist.x64.exe \
&& cabextract -q --directory="$W_TMP" "$W_TMP/a11" \
&& cabextract -q --directory="$W_TMP" "$W_TMP/a12" \
&& cabextract -q --directory="$W_TMP" "$W_TMP/a13" \
&& cd "$W_TMP" \
&& rename 's/_/\-/g' *.dll \
&& cp "$W_TMP"/*.dll "$W_SYSTEM64_DLLS"/

RUN ls /wine/drive_c/Python312

# install pyinstaller
RUN /usr/bin/pip install pyinstaller==$PYINSTALLER_VERSION

Expand Down