forked from AppFlowy-IO/AppFlowy
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix the app's Dockerfile and comment it (AppFlowy-IO#2162)
* chore: fix the app's Dockerfile and comment it * chore: test docker-compose on CI
- Loading branch information
1 parent
1cbedb3
commit 662d11b
Showing
4 changed files
with
121 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1 @@ | ||
frontend/appflowy_flutter/ | ||
frontend/scripts/ | ||
frontend/rust-lib/target | ||
shared-lib/target/ | ||
.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
name: Docker-CI | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
- release/* | ||
paths: | ||
- frontend/** | ||
|
||
pull_request: | ||
branches: | ||
- main | ||
- release/* | ||
paths: | ||
- frontend/** | ||
types: | ||
- opened | ||
- synchronize | ||
- reopened | ||
- unlocked | ||
- ready_for_review | ||
|
||
jobs: | ||
build-app: | ||
if: github.event.pull_request.draft != true | ||
concurrency: | ||
group: docker_ci-${{ github.event.pull_request.number || github.ref }} | ||
cancel-in-progress: true | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout source code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Build the app | ||
shell: bash | ||
run: | | ||
set -eu -o pipefail | ||
cd frontend/scripts/docker-buildfiles | ||
docker-compose build --no-cache --progress=plain \ | ||
| while read line; do \ | ||
if [[ "$line" =~ ^Step[[:space:]] ]]; then \ | ||
echo "$(date -u '+%H:%M:%S') | $line"; \ | ||
else \ | ||
echo "$line"; \ | ||
fi; \ | ||
done \ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,90 @@ | ||
FROM archlinux/archlinux:base-devel as builder | ||
#================ | ||
# BUILDER | ||
#================ | ||
|
||
RUN pacman -Syy | ||
FROM archlinux/archlinux:base-devel as builder | ||
|
||
RUN pacman -Syu --needed --noconfirm git xdg-user-dirs | ||
# Upgrade the system | ||
RUN pacman -Syyu --noconfirm | ||
|
||
# makepkg user and workdir | ||
# Set up makepkg user and workdir | ||
ARG user=makepkg | ||
ENV PATH="/home/$user/.pub-cache/bin:/home/$user/.local/flutter/bin:/home/$user/.local/flutter/bin/cache/dart-sdk/bin:${PATH}" | ||
RUN useradd --system --create-home $user \ | ||
&& echo "$user ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers.d/$user | ||
RUN pacman -S --needed --noconfirm sudo | ||
RUN useradd --system --create-home $user && \ | ||
echo "$user ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers | ||
ENV PATH="/home/$user/.pub-cache/bin:/home/$user/flutter/bin:/home/$user/flutter/bin/cache/dart-sdk/bin:${PATH}" | ||
USER $user | ||
WORKDIR /home/$user | ||
|
||
# Install yay | ||
RUN git clone https://aur.archlinux.org/yay.git \ | ||
&& cd yay \ | ||
&& makepkg -sri --needed --noconfirm | ||
RUN sudo pacman -S --needed --noconfirm curl tar | ||
RUN curl -sSfL \ | ||
--output yay.tar.gz \ | ||
https://github.com/Jguer/yay/releases/download/v12.0.2/yay_12.0.2_x86_64.tar.gz && \ | ||
tar -xf yay.tar.gz && \ | ||
sudo mv yay_12.0.2_x86_64/yay /bin && \ | ||
rm -rf yay_12.0.2_x86_64 && \ | ||
yay --version | ||
|
||
RUN yay -S --noconfirm curl base-devel sqlite openssl clang cmake ninja pkg-config gtk3 unzip | ||
# Install Rust | ||
RUN yay -S --noconfirm curl base-devel openssl clang cmake ninja pkg-config xdg-user-dirs | ||
RUN xdg-user-dirs-update | ||
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | ||
RUN source $HOME/.cargo/env && rustup toolchain install stable && rustup default stable | ||
RUN git clone https://github.com/flutter/flutter.git $HOME/.local/flutter | ||
RUN flutter channel stable | ||
RUN source ~/.cargo/env && \ | ||
rustup toolchain install stable && \ | ||
rustup default stable | ||
|
||
# Install Flutter | ||
RUN sudo pacman -S --noconfirm git tar gtk3 | ||
RUN curl -sSfL \ | ||
--output flutter.tar.xz \ | ||
https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.7.5-stable.tar.xz && \ | ||
tar -xf flutter.tar.xz && \ | ||
rm flutter.tar.xz | ||
RUN flutter config --enable-linux-desktop | ||
RUN flutter doctor | ||
RUN dart pub global activate protoc_plugin | ||
RUN sudo pacman -Syu --needed --noconfirm git xdg-user-dirs libkeybinder3 | ||
|
||
RUN git clone https://github.com/AppFlowy-IO/appflowy.git && \ | ||
cd appflowy/frontend && \ | ||
source $HOME/.cargo/env && \ | ||
cargo install --force cargo-make && \ | ||
cargo install --force duckscript_cli && \ | ||
cargo make appflowy-flutter-deps-tools && \ | ||
cargo make -p production-linux-x86_64 appflowy-linux | ||
# Intall build dependencies for AppFlowy | ||
RUN sudo pacman -S --noconfirm git libkeybinder3 sqlite | ||
RUN source ~/.cargo/env && cargo install --force cargo-make duckscript_cli | ||
|
||
CMD ["/home/makepkg/appflowy/frontend/appflowy_flutter/build/linux/x64/release/bundle/appflowy_flutter"] | ||
# Build AppFlowy | ||
COPY . /appflowy | ||
RUN sudo chown -R $user: /appflowy | ||
WORKDIR /appflowy | ||
RUN cd frontend && \ | ||
source ~/.cargo/env && \ | ||
cargo make appflowy-flutter-deps-tools && \ | ||
cargo make -p production-linux-x86_64 appflowy-linux | ||
|
||
|
||
#================ | ||
# APP | ||
#================ | ||
|
||
################# | ||
FROM archlinux/archlinux | ||
|
||
RUN pacman -Syy && \ | ||
pacman -Syu --needed --noconfirm xdg-user-dirs && \ | ||
pacman -Scc --noconfirm | ||
RUN xdg-user-dirs-update | ||
# Upgrade the system | ||
RUN pacman -Syyu --noconfirm | ||
|
||
COPY --from=builder /usr/sbin/yay /usr/sbin/yay | ||
RUN yay -S --noconfirm gtk3 libkeybinder3 | ||
# Install runtime dependencies | ||
RUN pacman -S --noconfirm xdg-user-dirs gtk3 libkeybinder3 && \ | ||
pacman -Scc --noconfirm | ||
|
||
# Set up appflowy user | ||
ARG user=appflowy | ||
ARG uid=1000 | ||
ARG gid=1000 | ||
|
||
RUN groupadd --gid $gid appflowy | ||
RUN groupadd --gid $gid $user | ||
RUN useradd --create-home --uid $uid --gid $gid $user | ||
USER $user | ||
WORKDIR /home/$user | ||
|
||
COPY --from=builder /home/makepkg/appflowy/frontend/appflowy_flutter/build/linux/x64/release/bundle/ . | ||
# Set up the AppFlowy app | ||
WORKDIR /home/$user | ||
COPY --from=builder /appflowy/frontend/appflowy_flutter/build/linux/x64/release/bundle . | ||
RUN xdg-user-dirs-update && \ | ||
test -e ./AppFlowy && \ | ||
file ./AppFlowy | ||
|
||
CMD ["./appflowy_flutter"] | ||
CMD ["./AppFlowy"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,27 @@ | ||
version: "3" | ||
|
||
# NOTE: Docker should be allowed to connect to the X server in your host prior | ||
# to running `docker compose up`. Run `xhost local:docker` in the host to allow | ||
# for those connections, otherwise the following error will occur: | ||
# Gtk-WARNING **: cannot open display: :0 | ||
# See https://stackoverflow.com/a/34586732/8401696 for more context. | ||
|
||
services: | ||
app: | ||
build: . | ||
build: | ||
context: ../../.. | ||
dockerfile: ./frontend/scripts/docker-buildfiles/Dockerfile | ||
image: appflowy/appflowy:latest | ||
stdin_open: true | ||
# tty: true | ||
devices: | ||
- "/dev/dri:/dev/dri" # fixes MESA-LOADER error | ||
- /dev/dri:/dev/dri # fixes MESA-LOADER error | ||
environment: | ||
- DISPLAY=${DISPLAY} | ||
- DISPLAY=$DISPLAY | ||
- NO_AT_BRIDGE=1 # fixes dbind-WARNING | ||
volumes: | ||
- $HOME/.Xauthority:/root/.Xauthority:rw | ||
- /tmp/.X11-unix:/tmp/.X11-unix | ||
- /dev/dri:/dev/dri | ||
- /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket | ||
- appflowy-data:/home/makepkg | ||
network_mode: host | ||
|
||
volumes: | ||
appflowy-data: |