无法在 Docker 中颤动 运行

Cannot get flutter running in Docker

我的 Dockerfile

FROM ubuntu:18.04

# Project files
ARG PROJECT_DIR=/srv/api
RUN mkdir -p $PROJECT_DIR

WORKDIR $PROJECT_DIR


# Update
RUN apt-get -y upgrade
RUN apt-get update

RUN apt-get install -y xz-utils
RUN apt-get install -y curl
RUN curl https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_v1.7.8+hotfix.4-stable.tar.xz -o /flutter.tar.xz
RUN tar xf /flutter.tar.xz 
#RUN mv flutter /srv/api/flutter
RUN ls /srv/api/flutter
RUN chmod a+x /srv/api/flutter
RUN flutter doctor

# Install Flutter dependencies
RUN flutter upgrade
RUN flutter packages pub global activate webdev
RUN flutter packages upgrade


# Copy everything to Docker
COPY ./ ./

RUN flutter doctor

失败

如果我输入路径 /srv/api/flutter,我会收到错误 flutter: not found。 如果我输入路径 /usr/local/bin/flutter 我收到错误 flutter: Permission Denied.

我试着把它放在常规目录和/usr 目录中。两种方式都失败了。我尝试搜索它,但似乎没有任何效果。

我该如何解决?

flutterflutter 包的 ./bin/ 目录中可用。稍作修改 Dockerfile:

FROM ubuntu:18.04

ARG PROJECT_DIR=/srv/api
ENV PATH=/opt/flutter/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

RUN apt-get update && \
    apt-get install -y \
        xz-utils \
        git \
        openssh-client \
        curl && \
    rm -rf /var/cache/apt

RUN curl -L https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_v1.7.8+hotfix.4-stable.tar.xz | tar -C /opt -xJ

WORKDIR ${PROJECT_DIR}
COPY ./ ./

RUN flutter doctor
RUN flutter upgrade
RUN flutter packages pub global activate webdev
RUN flutter packages upgrade

此示例将 flutter 包提取到 /opt 并在 $PATH 中设置 /opt/flutter/bin - flutter 可执行文件位于 /opt/flutter/bin/flutter .

:

  • WORKDIR 如果目录不存在则创建目录 - 删除 RUN mkdir -p $PROJECT_DIR 从 最终图像 (RUN, COPY and ADD create layers).
  • 合并了 apt-get update && apt-get install -y ... 并删除了 apt-get upgrade 原因在 这 documentation.
  • 拆分包以在多行上安装,因为这样更容易 看看 diff imo 有什么变化。
  • 合并 curl | tar.
  • 删除了 ls /srv/api/flutterchmod a+x /srv/api/flutter RUN的。