docker - 无法在 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 目录中。两种方式都失败了。我尝试搜索它,但似乎没有任何效果。
我该如何解决?
解决方案
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
从最终图像中删除一个图层(RUN
并COPY
创建ADD
图层)。- 结合
apt-get update && apt-get install -y ...
并删除了文档apt-get upgrade
中所述的原因 。 - 拆分软件包以安装在多行上,因为更容易查看
diff
imo 中的更改。 - 结合了
curl | tar
. - 删除了
ls /srv/api/flutter
andchmod a+x /srv/api/flutter
RUN
。
推荐阅读
- jquery - AngularJS ng-repeat 与 jquery 冲突
- html - 使用网格 CSS 的 3 列网格(从上到下)
- mapbox - 获取特定集群下的所有标记
- javascript - 找不到我添加到外部 javascript 库的方法
- android - Lottie 全屏拍照 屏幕适配 - 低屏幕分辨率全屏问题
- php - Ajax 调用返回整页 HTML 而不是所需数据
- javascript - PHP 和 JS 中有 JSON:API 解析器吗?
- c++ - 为什么在评估多项式时horners方法没有溢出
- php - 转换 laravel Eloquent 查询
- javascript - 单击和悬停时的连续 CSS 效果