Docker 容器中的 Grails 应用 运行 未使用本地包
Grails App running in Docker Container not using Local Packages
我目前正在尝试 运行 我们在 Grails 2.3.11 中的应用程序通过 docker-与数据库组合。我已经启动了数据库并且 运行ning 没有问题,而且应用程序容器设置了 grails 并开始了编译过程,但是每次我停止并重新启动包时它都会继续下载所有包。这成为一个问题,因为我们必须下载如此多的包(而且由于 Grails 2,我们必须解决很多错误)。我试图将我的本地 grails 文件夹挂载到容器中以使其 运行 脱离那些文件夹,但它似乎没有任何成功。有什么明显的我做错了,或者我可以通过某种方式轻松检查问题出在哪里吗?
我还试图将所有本地数据库信息映射到有问题的 mysql 容器中。但我还没有深入研究它,如果你在那里看到一个明显的问题,那将会有所帮助。
docker-compose.yml:
version: '2'
services:
grails:
image: ibbrussell/grails:2.3.11
command: run-app
volumes:
- ~/.m2:/home/developer/.m2
- ~/.gradle:/home/developer/.gradle
- ~/.grails:/home/developer/.grails
- ./:/app
ports:
- "8080:8080" #Grails default port
- "5005:5005" #Grails debug port
links:
- db
deploy:
resources:
limits:
memory: 4G
reservations:
memory: 4G
db:
image: mysql:5.6
container_name: grails_mysql
ports:
- "3306:3306"
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: grails
volumes:
- "/usr/local/mysql/data:/var/lib/mysql"
Docker 文件:
FROM java:8
# Set customizable env vars defaults.
ENV GRAILS_VERSION 2.3.11
# Install Grails
WORKDIR /usr/lib/jvm
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
ENV GRAILS_OPTS="-XX:MaxPermSize=4g -Xms4g -Xmx4g"
# Create App Directory
RUN mkdir /app
# Set Workdir
WORKDIR /app
# Set Default Behavior
ENTRYPOINT ["grails"]
所以我使用的映射最终不正确。我正在从 1 篇文章中进行文件映射,并在尝试另一个工作映射后结束工作。我在下面进行了切换:
原文:
volumes:
- ~/.m2:/home/developer/.m2
- ~/.gradle:/home/developer/.gradle
- ~/.grails:/home/developer/.grails
- ./:/app
新:
volumes:
- ~/.m2:/root/.m2
- ~/.gradle:/root/.gradle
- ~/.grails:/root/.grails
- ./:/app
我目前正在尝试 运行 我们在 Grails 2.3.11 中的应用程序通过 docker-与数据库组合。我已经启动了数据库并且 运行ning 没有问题,而且应用程序容器设置了 grails 并开始了编译过程,但是每次我停止并重新启动包时它都会继续下载所有包。这成为一个问题,因为我们必须下载如此多的包(而且由于 Grails 2,我们必须解决很多错误)。我试图将我的本地 grails 文件夹挂载到容器中以使其 运行 脱离那些文件夹,但它似乎没有任何成功。有什么明显的我做错了,或者我可以通过某种方式轻松检查问题出在哪里吗?
我还试图将所有本地数据库信息映射到有问题的 mysql 容器中。但我还没有深入研究它,如果你在那里看到一个明显的问题,那将会有所帮助。
docker-compose.yml:
version: '2'
services:
grails:
image: ibbrussell/grails:2.3.11
command: run-app
volumes:
- ~/.m2:/home/developer/.m2
- ~/.gradle:/home/developer/.gradle
- ~/.grails:/home/developer/.grails
- ./:/app
ports:
- "8080:8080" #Grails default port
- "5005:5005" #Grails debug port
links:
- db
deploy:
resources:
limits:
memory: 4G
reservations:
memory: 4G
db:
image: mysql:5.6
container_name: grails_mysql
ports:
- "3306:3306"
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: grails
volumes:
- "/usr/local/mysql/data:/var/lib/mysql"
Docker 文件:
FROM java:8
# Set customizable env vars defaults.
ENV GRAILS_VERSION 2.3.11
# Install Grails
WORKDIR /usr/lib/jvm
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
ENV GRAILS_OPTS="-XX:MaxPermSize=4g -Xms4g -Xmx4g"
# Create App Directory
RUN mkdir /app
# Set Workdir
WORKDIR /app
# Set Default Behavior
ENTRYPOINT ["grails"]
所以我使用的映射最终不正确。我正在从 1 篇文章中进行文件映射,并在尝试另一个工作映射后结束工作。我在下面进行了切换:
原文:
volumes:
- ~/.m2:/home/developer/.m2
- ~/.gradle:/home/developer/.gradle
- ~/.grails:/home/developer/.grails
- ./:/app
新:
volumes:
- ~/.m2:/root/.m2
- ~/.gradle:/root/.gradle
- ~/.grails:/root/.grails
- ./:/app