基于Docker搭建本地App Inventor(提供Docker镜像)
如果想直接下载Docker镜像包或者dockermakefile,直接跳转到Docker镜像下载即可
注意: 我提供的Docker镜像包是将App Inventor和它的构建服务器分开的,没有做更多处理
App Inventor介绍
App Inventor(简称AI)由谷歌实验室开发,后移交麻省理工学院,是一款可视化编程环境,采用搭积木的方式快速建立应用程序,并且可以结合AI伴侣,极其便利的在手机上进行测试和应用。
官网地址: https://appinventor.mit.edu/
GitHub地址: https://github.com/mit-cml/appinventor-sources
零、搭建注意事项
1、搭建中涉及到访问Google App Engine,需要科学上网或自行寻找相关镜像。
2、本人的Docker配置基于1Panel,请自行搜索如何创建一个完整的Docker配置。
一、使用Docker编译App Inventor
1、基础准备
下载OpenJDK11的Docker镜像
本次Docker直接基于openJDK11版本(App Inventor要求版本),因本人服务器上已经安装了一个版本的jdk,且因为是首次安装App Inventor,故使用Docker安装App Inventor,即防止对环境造成污染,也有学习Docker的想法。
# 拉取命令如下: pull是拉取的意思,openjdk:11 是指代openjdk 11版本
sudo docker pull openjdk:11
注意: 如果下载速度太慢,可以网上找一下Docker换源。
因本人已安装,只显示如下信息,如果想要确定是否安装成功,可以试试两次输入,确定是否安装成功。

下载App Inventor Git(也可以在容器中下载)
git下载就没什么多说的了,下面是命令
git clone https://github.com/mit-cml/appinventor-sources.git
下载好后,放在一个指定位置,只要自己记得位置就行。
注意: 因本人需要创建dockerfile,使用容器下载的方法不是很推荐。
2、运行镜像
运行镜像我是直接使用1Panel进行创建,如果是在本地自行创建的话,可以搜索一下创建指令的使用。
我的1Panel对openJDK11的配置如下:


如果使用命令构建,可以参考如下命令(由DeepSeek生成):
# 1panel-network网络类似bridge
sudo docker run -it \
--name AppInventor \
--network 1panel-network \
-p 6858:6858 \
-p 9990:9990 \
-v /opt/1panel/apps/AppInventor/Source/:/root/Source/ \
openjdk:11 \
/bin/bash
3、连接到docker服务器
要连接docker服务器,需要先知道docker的ID,使用如下命令获取dockerID
sudo docker ps | grep openjdk:11

此处bd5cb8217f82就是我们需要的Docker ID。使用下列命令连接到docker终端
# 将 <Docker ID> 替换为刚才获取的ID
# 示例: sudo docker exec -it bd5cb8217f82 /bin/bash
sudo docker exec -it <Docker ID> /bin/bash
连接后,打开我们挂载的文件位置,以我的/root/Source为例,直接输入cd /root/Source即可。此时输入ls查看命令查看是否正常。

如果你决定在Docker中使用git下载,可以先安装git后再使用git clone下载。
4、在docker中安装必要的环境
虚拟机网络配置
注意: 此种玩法比较剑走偏锋,本人因服务器未添加科学上网方式,且不想安装故使用此方法。
App Inventor需要有GAE(Google App Engine)支持,需要使用GAE支持。因本人的服务器未安装其他东西,且服务器在内网中,本人使用了通过我自己的电脑提供连接外网环境。使用过程如下:
注意: 使用此功能需要确定你的Clash一类的软件支持相关功能端口,如果不支持可能不适用这种方法。
端口转发功能教程来源于: iptables做TCP/UDP端口转发【转】 - paul_hch - 博客园
在实体机(非Docker环境) 中输入以下命令(此命令用于端口转发):
sudo sysctl -w net.ipv4.ip_forward=1 # 启用IP转发
# 此处的37897为我自己指定的任意端口,为了避免占用,使用了此端口,
# 192.168.8.4:7897 是我电脑的IP地址,同时7897端口作为终端代理,此处根基自己的实际情况填写
sudo iptables -t nat -A PREROUTING -p tcp --dport 37897 -j DNAT --to-destination 192.168.8.4:7897
# 将路由的IP地址转换为服务器地址,172.19.0.22 是我Docker的地址,直接使用1Panel查看的
sudo iptables -t nat -A POSTROUTING -p tcp -d 172.19.0.22 --dport 7897 -j SNAT --to-source 192.168.8.3
在Docker虚拟机中输入以下命令:
# 此处37897为之前指定的端口地址,172.19.0.1是虚拟网段中实体主机的IP地址
export http_proxy=http://172.19.0.1:37897
export https_proxy=http://172.19.0.1:37897
通过 apt 下载并管理gcloud
Google对此的官方教程: 安装 gcloud CLI | Google Cloud SDK Documentation
- 首先更新apt
apt update && apt uppgrade -y
- 安装必要的软件包
# 注意: 此处ant为后继编译项目所需
apt install apt-transport-https ca-certificates gnupg curl ant -y
- 导入Google Cloud 公钥(此命令在官网教程中添加了sudo,在我们这里就没有必要了)。
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
- 添加 gcloud CLI 发行版 URI 作为软件包源
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
- 更新并安装 gcloud CLI
apt update && apt install -y google-cloud-cli google-cloud-cli-app-engine-java
- (此过程可以跳过) 运行
gcloud init以开始执行初始化操作
gcloud init
gcloud init
更新必要的依赖包
此处基于App Inventor官网教程: appinventor-sources/README.md at master · mit-cml/appinventor-sources · GitHub 编译部分
- 更新依赖项(请确定已打开git下来的文件夹)
git submodule update --init
- 编译项目
cd appinventor/
ant MakeAuthKey
ant
注意,执行ant过程中,需要确保返回BUILD SUCCESSFUL,类似下图这种
- 编译BuildServer,效果和前面类似
cd buildserver/
ant
- 测试,使用命令运行
# 运行主服务器
cd /root/Source/appinventor/
/usr/lib/google-cloud-sdk/bin/java_dev_appserver.sh --port=8080 --address=0.0.0.0 appengine/build/war/
# 运行编译服务器
cd /root/Source/appinventor/buildserver/
ant RunLocalBuildServer
二、使用
根据服务器的设置,打开网址确定功能是否可以用,我的网址如下(具体情况自行调整)
http://192.168.8.3:6858/
如果成功了,用浏览器打开网址会显示下面的内容

选择Click Here to use your Google Account to login,选择同意

登陆后显示如下(切换了语言的,后继使用按着教程来即可)

如果功能正常,也能进行编译
注意:如果直接使用我的Docker镜像,无法直接进行编译

三、dockerfile创建镜像以及镜像下载(本人自己编译学习,如果有支付相关的请勿使用)
注意: 后继内容在实体机上执行,而非Dokcer容器中.
注意: 因构建服务器和主服务器分开,无法在主服务器的网页编译APP
1、主服务器构建
注意: 后继内容在实体机上执行,而非Dokcer容器中.
注意: 因构建服务器和主服务器分开,无法在主服务器的网页编译APP
- 创建一个文件夹,用于生成主服务,将docker编译的文件复制到工程下
mkdir ~/AppInventor
cd ~/AppInventor
sudo cp -r /opt/1panel/apps/AppInventor/Source/appinventor/appengine/build/war/ ./app
- 根据前面给的命令,dockerfile我给的内容如下(主服务器)(使用命令
vim Dockerfile)
FROM openjdk:11
ARG http_proxy=http://172.19.0.1:37897 https_proxy=http://172.19.0.1:37897
EXPOSE 6858
COPY ./app/ /AppInventor/
WORKDIR /AppInventor/
RUN apt-get update -y \
&& apt-get install apt-transport-https ca-certificates gnupg curl ant -y \
&& echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list \
&& curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg \
&& apt-get update -y \
&& apt-get install google-cloud-cli google-cloud-cli-app-engine-java -y
ENTRYPOINT ["/usr/lib/google-cloud-sdk/bin/java_dev_appserver.sh", "--port=6858", "--address=0.0.0.0" ,"/AppInventor/"]
- 构建Docker并保存
sudo docker build -t app_inventor:v00.01.00 .
sudo docker save -o AppInventor.tar app_inventor:v00.01.00
# 找到标签ID
sudo docker images | grep app_inventor
# 执行删除
sudo docker rmi <Docker ID>
2、构建服务器创建
注意: 后继内容在实体机上执行,而非Dokcer容器中.
注意: 因构建服务器和主服务器分开,无法在主服务器的网页编译APP
- 创建一个文件夹,将builderserver移动进来
mkdir ~/AppInventorServer
cd ~/AppInventorServer
sudo cp -r /opt/1panel/apps/AppInventor/Source/appinventor/ ./app
- 编译服务器dockerfile如下(使用命令
vim Dockerfile)
FROM openjdk:11
ARG http_proxy=http://172.19.0.1:37897 https_proxy=http://172.19.0.1:37897
EXPOSE 9990
COPY ./app/ /AppInventorServer/
WORKDIR /AppInventorServer/buildserver
RUN apt update -y \
&& apt-get install apt-transport-https ca-certificates gnupg curl ant -y \
&& echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list \
&& curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg \
&& apt-get update -y \
&& apt-get install google-cloud-cli google-cloud-cli-app-engine-java -y
ENTRYPOINT ["ant", "RunLocalBuildServer"]
- 构建Docker并保存
sudo docker build -t app_inventor_server:v00.01.00 .
sudo docker save -o AppInventorServer.tar app_inventor_server:v00.01.00
# (可选)找到标签ID
sudo docker images | grep app_inventor_server
# (可选)执行删除
sudo docker rmi <Docker ID>
3、Docker下载链接
百度网盘地址:
注意: 后继内容在实体机上执行,而非Dokcer容器中.
注意: 因构建服务器和主服务器分开,无法在主服务器的网页编译APP
通过网盘分享的文件:App Inventor
链接: https://pan.baidu.com/s/192gd7tQmYpaHjEYsQdQNmA?pwd=52um 提取码: 52um
加载镜像方式(不再过多赘述)
sudo docker load -i app_inventor_server:v00.01.00.tar
sudo docker load -i app_inventor:v00.01.00.tar
更多推荐




所有评论(0)