下面的配置是打包EXPO 51SDK配置
从git拉取打包
# docker build -t build-app-expo -f Dockerfile_git .
# docker run -it -e GIT_REPO_URL=gitee.com/retur0/expo.git -e GIT_USERNAME=youfak -e GIT_PASSWORD=your_password -e EXPO_TOKEN=your_token build-app-expo
FROM mobiledevops/android-sdk-image:30.0.3
# 切换到root用户以确保有权限更新和安装软件包
USER root
# 更新系统并安装 Node.js、JDK 17 和 git
RUN apt update && \
apt install -y nodejs npm expect jq wget unzip curl git && \
npm install -g n && \
n stable && \
apt install -y openjdk-17-jdk
# 安装 eas-cli 和 expo
RUN npm install -g eas-cli expo yarn
# Git仓库相关环境变量
ENV GIT_REPO_URL=""
ENV NODE_ENV=development
ENV GIT_USERNAME=""
ENV GIT_PASSWORD=""
# 创建工作目录
WORKDIR /WWW/APP
# 创建git克隆脚本
RUN echo '#!/usr/bin/expect -f' > /git-clone.exp && \
echo 'set timeout -1' >> /git-clone.exp && \
echo 'spawn git clone "https://$env(GIT_REPO_URL)" /WWW/APP/expo' >> /git-clone.exp && \
echo 'expect "Username for*"' >> /git-clone.exp && \
echo 'send "$env(GIT_USERNAME)\r"' >> /git-clone.exp && \
echo 'expect "Password for*"' >> /git-clone.exp && \
echo 'send "$env(GIT_PASSWORD)\r"' >> /git-clone.exp && \
echo 'expect eof' >> /git-clone.exp && \
chmod +x /git-clone.exp
# 创建启动脚本
RUN echo '#!/bin/bash' > /start.sh && \
echo 'set -e' >> /start.sh && \
echo 'if [ -z "$EXPO_TOKEN" ]; then' >> /start.sh && \
echo ' echo "Error: EXPO_TOKEN is required"' >> /start.sh && \
echo ' exit 1' >> /start.sh && \
echo 'fi' >> /start.sh && \
echo 'if [ -z "$GIT_USERNAME" ] || [ -z "$GIT_PASSWORD" ]; then' >> /start.sh && \
echo ' echo "Error: GIT_USERNAME and GIT_PASSWORD are required"' >> /start.sh && \
echo ' exit 1' >> /start.sh && \
echo 'fi' >> /start.sh && \
echo 'echo "Using NODE_ENV=$NODE_ENV"' >> /start.sh && \
echo 'echo "Cleaning working directory..."' >> /start.sh && \
echo 'rm -rf /WWW/APP/*' >> /start.sh && \
echo 'echo "Cloning repository..."' >> /start.sh && \
echo '/git-clone.exp || {' >> /start.sh && \
echo ' echo "Failed to clone repository"' >> /start.sh && \
echo ' echo "Please check your credentials and repository URL"' >> /start.sh && \
echo ' exit 1' >> /start.sh && \
echo '}' >> /start.sh && \
echo 'echo "Current directory: $(pwd)"' >> /start.sh && \
echo 'echo "Checking repository contents..."' >> /start.sh && \
echo 'ls -la' >> /start.sh && \
echo 'echo "Checking scripts directory..."' >> /start.sh && \
echo 'ls -la scripts/' >> /start.sh && \
echo 'echo "Installing dependencies..."' >> /start.sh && \
echo 'yarn install' >> /start.sh && \
echo 'echo "Starting build..."' >> /start.sh && \
echo 'eas build --platform android --profile $NODE_ENV --local' >> /start.sh && \
chmod +x /start.sh
ENTRYPOINT ["/start.sh"]
直接使用项目根目录打包
FROM mobiledevops/android-sdk-image:30.0.3
# 切换到root用户以确保有权限更新和安装软件包
USER root
# 更新系统并安装 Node.js 和 JDK 17
RUN apt update && \
apt install -y nodejs npm expect jq wget unzip curl && \
npm install -g n && \
n stable && \
apt install -y openjdk-17-jdk
# 安装 eas-cli 和 expo
RUN npm install -g eas-cli expo yarn
#项目ID
ARG EXPO_PROJECT_ID
ENV EXPO_PROJECT_ID=$EXPO_PROJECT_ID
# 接收登录凭据
ARG EXPO_TOKEN
ARG NODE_ENV
ENV EXPO_TOKEN=$EXPO_TOKEN
ENV NODE_ENV=$NODE_ENV
# 创建工作目录
WORKDIR /WWW/APP
# 安装依赖
RUN yarn install
CMD ["eas", "build", "--platform", "android", "--profile", "development", "--local"]
# 使用 build-app 作为服务名称 docker-compose up -d
#在根目录下创建一个 .env 文件 并写入以下内容
# EXPO_TOKEN=your_token # 访问 https://expo.dev/accounts/youfak/settings/access-tokens 获取EXPO_TOKEN
# EXPO_PROJECT_ID=your_project_id
# NODE_ENV=development
version: "3"
services:
build:
env_file:
- .env
build:
context: .
dockerfile: Dockerfile
args:
- EXPO_TOKEN=${EXPO_TOKEN}
- EXPO_PROJECT_ID=${EXPO_PROJECT_ID}
- NODE_ENV=${NODE_ENV}
image: build-app
container_name: rnApp
tty: true
stdin_open: true
environment:
- EXPO_TOKEN=${EXPO_TOKEN}
- EXPO_PROJECT_ID=${EXPO_PROJECT_ID}
- NODE_ENV=${NODE_ENV}
volumes:
- ./:/WWW/APP/
评论区