Grails 3.1.4 和 Docker - grails 命令返回 "No profile found for name web"

标签 grails gradle docker grails-3.1

我有一个简单的 grails 应用程序,它本身运行良好。使用 grails web 配置文件和 grails run-app

没有问题

但是,当我从应用程序构建 docker 镜像时,grails 命令,例如 grails run-app --stacktracegrails dependency-report --stacktrace 发送到 docker 失败并显示 stacktrace:

| Error Error occurred running Grails CLI: No profile found for name [web]. (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
java.lang.IllegalStateException: No profile found for name [web].
    at org.grails.cli.GrailsCli.initializeProfile(GrailsCli.groovy:507)
    at org.grails.cli.GrailsCli.initializeApplication(GrailsCli.groovy:308)
    at org.grails.cli.GrailsCli.execute(GrailsCli.groovy:271)
    at org.grails.cli.GrailsCli.main(GrailsCli.groovy:162)
| Error Error occurred running Grails CLI: No profile found for name [web].

Docker 构建命令: 从 grails 应用程序的根目录运行。 用户属于 docker 组。

docker build -t mygrailsapp .

Docker 文件: (构建将在 RUN grails dependency-report --stacktrace 上失败。如果我删除该命令,构建就会完成。但是,第一次使用默认命令运行应用程序时,它会失败并出现相同的错误。)

#
# My Dockerfile
#
# https://github.com/dockerfile/java
# https://github.com/dockerfile/java/tree/master/oracle-java8
# https://hub.docker.com/r/mozart/grails/

# Pull base image. 
FROM ubuntu

RUN apt-get update

# install apt-get-repository
RUN \
    apt-get install -y software-properties-common wget unzip git

# Install Java.
RUN \
  echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
  add-apt-repository -y ppa:webupd8team/java && \
  apt-get update && \
  apt-get install -y oracle-java8-installer
  rm -rf /var/lib/apt/lists/* && \
  rm -rf /var/cache/oracle-jdk8-installer

# Define working directory.
WORKDIR /data

# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle


# Set customizable env vars defaults.
# Set Grails version (default: 3.1.4; min: 3.0.0; max: 3.1.4).
ENV GRAILS_VERSION 3.1.4

# Install Grails
WORKDIR /usr/lib/jvm

# TODO put grails zips on your own server with decent bandwidth
RUN wget https://github.com/grails/grails-core/releases/download/v$GRAILS_VERSION/grails-$GRAILS_VERSION.zip && \
    unzip grails-$GRAILS_VERSION.zip && \
    rm -rf grails-$GRAILS_VERSION.zip && \
    ln -s grails-$GRAILS_VERSION grails

# Setup Grails path.
ENV GRAILS_HOME /usr/lib/jvm/grails
ENV PATH $GRAILS_HOME/bin:$PATH

# Create App Directory
RUN mkdir /app

# Set Workdir
WORKDIR /app

# Copy App files
COPY . /app

# Run Grails dependency-report command to pre-download dependencies but not
# create unnecessary build files or artifacts.
RUN grails dependency-report --stacktrace

# Set Default Behavior
ENTRYPOINT ["grails"]

CMD ["run-app"]

设置:

Ubuntu 14.04 LTS 64

Jave:Oracle JDK 1.8.0_77 64

通过 sdkman 4.0.32:

Grails 3.14 格罗维 2.4.6 Gradle 2.12

docker 客户: 版本:1.10.3 API版本:1.22 Go版本:go1.5.3 Git 提交:20f81dd 建成时间:2016 年 3 月 10 日星期四 15:54:52 操作系统/架构:linux/amd64

最佳答案

当我将使用 web 配置文件的 Grails 3.1.4 应用程序移动到新计算机时,我遇到了同样的问题。

在我的应用程序根目录中执行 gradle clean 触发了 Grails Maven 依赖项的下载,之后 grails 命令开始工作。

关于Grails 3.1.4 和 Docker - grails 命令返回 "No profile found for name web",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273226/

相关文章:

grails - 在Grails中具有嵌套数组的Groovy JSONBuilder

java - 使用 Gradle 将所有创建的和第三方 jar 复制到一个文件夹中

grails - Grails等效于grails.plugin.location

Docker 上的 Windows 文件共享被防火墙阻止

docker - 构建较旧的Tensorflow 2.x

macos - 如何从 Mac 访问 docker 容器 `localhost`?

java - JCIFS 访问被拒绝

postgresql - Grails 2.5.11/Postgresql 10,在GSP中上传图像并显示

google-app-engine - 如何在GAE上为grails应用程序设置一对多单向映射?

Android Studio 3.0 金丝雀 5 - 错误 :Unable to load class 'org.gradle.api.internal.component.Usage'