Skip to content

Commit 215e329

Browse files
authored
Merge pull request #73 from go-flutter-desktop/feature/dockerfile
Add new --docker approach
2 parents 1e0fd4b + 03f203a commit 215e329

35 files changed

+939
-560
lines changed

Dockerfile

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
FROM snapcore/snapcraft AS snapcraft
2+
# Using multi-stage dockerfile to obtain snapcraft binary
3+
4+
FROM ubuntu:bionic AS xarbuilder
5+
RUN apt-get update \
6+
&& apt-get install -y \
7+
wget tar libssl1.0-dev libxml2-dev make g++
8+
RUN cd /tmp \
9+
&& wget https://github.com/downloads/mackyle/xar/xar-1.6.1.tar.gz 2>&1 \
10+
&& tar -zxvf xar-1.6.1.tar.gz 2>&1 \
11+
&& mv xar-1.6.1 xar \
12+
&& cd xar \
13+
&& ./configure 2>&1 \
14+
&& make 2>&1 \
15+
&& make install 2>&1
16+
17+
FROM goflutter/golang-cross:latest AS hover
18+
19+
# Add dart apt repository
20+
RUN wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - 2>&1 \
21+
&& wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list
22+
23+
# Install dependencies via apt
24+
RUN apt-get update \
25+
&& apt-get upgrade -y \
26+
&& apt-get install -y \
27+
# why is gnupg-agent needed? Can this be removed??
28+
gnupg-agent \
29+
# for what command are these dependencies??
30+
libgl1-mesa-dev xorg-dev \
31+
# dependencies for flutter
32+
dart unzip \
33+
# dependencies for darwin-bundle
34+
icnsutils \
35+
# dependencies for darwin-dmg
36+
genisoimage \
37+
# dependencies for darwin-pkg
38+
cpio git \
39+
# dependencies for linux-appimage
40+
libglib2.0-0 curl file \
41+
# dependencies for linux-rpm
42+
rpm \
43+
# dependencies for linux-snap
44+
locales \
45+
# dependencies for windows-msi
46+
wixl imagemagick \
47+
&& rm -rf /var/lib/apt/lists/* \
48+
&& ln -sf /usr/lib/dart/bin/pub /usr/bin/pub
49+
50+
# Install darwin-pkg dependencies
51+
# TODO, optimization: make bomutils in a separate stage, copy binaries/libs, like xar.
52+
RUN cd /tmp \
53+
&& git clone https://github.com/hogliux/bomutils 2>&1 \
54+
&& cd bomutils \
55+
&& make 2>&1 \
56+
&& make install 2>&1
57+
COPY --from=xarbuilder /usr/local/bin/xar /usr/local/bin/xar
58+
COPY --from=xarbuilder /usr/local/lib/libxar.so.1 /usr/local/lib/libxar.so.1
59+
COPY --from=xarbuilder /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
60+
61+
# Install linux-appimage dependencies
62+
# Currently broken
63+
#RUN cd /opt \
64+
# && curl -LO https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage \
65+
# && chmod a+x appimagetool-x86_64.AppImage \
66+
# && ./appimagetool-x86_64.AppImage --appimage-extract \
67+
# && mv squashfs-root appimagetool \
68+
# && rm appimagetool-x86_64.AppImage
69+
#ENV PATH=/opt/appimagetool/usr/bin:$PATH
70+
71+
# Install linux-snap dependencies (based on https://hub.docker.com/r/snapcore/snapcraft/dockerfile)
72+
COPY --from=snapcraft /snap/core /snap/core
73+
COPY --from=snapcraft /snap/snapcraft /snap/snapcraft
74+
COPY --from=snapcraft /snap/bin/snapcraft /snap/bin/snapcraft
75+
# RUN locale-gen en_US.UTF-8 # TODO: remove locales from apt install above or re-enable these env vars
76+
# ENV LANG="en_US.UTF-8"
77+
# ENV LANGUAGE="en_US:en"
78+
# ENV LC_ALL="en_US.UTF-8"
79+
ENV PATH="/snap/bin:$PATH"
80+
ENV SNAP="/snap/snapcraft/current"
81+
ENV SNAP_NAME="snapcraft"
82+
ENV SNAP_ARCH="amd64"
83+
# RUN dpkg-reconfigure locales
84+
85+
# TODO: Add pacman pkg packaging
86+
87+
# Install Flutter from the beta channel
88+
RUN git clone --single-branch --depth=1 --branch beta https://github.com/flutter/flutter /opt/flutter 2>&1 \
89+
&& ln -sf /opt/flutter/bin/flutter /usr/bin/flutter \
90+
&& flutter doctor -v
91+
92+
# Build hover
93+
WORKDIR /go/src/app
94+
COPY . .
95+
RUN go get -d -v ./... 2>&1
96+
RUN go install -v ./... 2>&1
97+
98+
COPY docker/hover-safe.sh /usr/local/bin/hover-safe.sh
99+
100+
WORKDIR /app

0 commit comments

Comments
 (0)