首页 > 解决方案 > 无法在 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 目录中。两种方式都失败了。我尝试搜索它,但似乎没有任何效果。

我该如何解决?

标签: dockerflutterubuntu-18.04chmod

解决方案


flutter可以在包的./bin/目录中找到flutter。稍作修改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并设置/opt/flutter/bin$PATH-flutter可执行文件位于/opt/flutter/bin/flutter.

注意

  • WORKDIR如果该目录尚不存在,则创建该目录 - 删除RUN mkdir -p $PROJECT_DIR从最终图像中删除一个图层(RUNCOPY创建ADD图层)。
  • 结合apt-get update && apt-get install -y ...并删除了文档apt-get upgrade中所述的原因 。
  • 拆分软件包以安装在多行上,因为更容易查看diffimo 中的更改。
  • 结合了curl | tar.
  • 删除了ls /srv/api/flutterand chmod a+x /srv/api/flutter RUN

推荐阅读