Docker 容器中的# Julia v1.0.2 Pkg.activate(".") 问题
问题:Docker 容器中的# Julia v1.0.2 Pkg.activate(".") 问题 我正在为一个 Julia 项目构建一个 Docker 容器,并且 Pkg.activate(".") 使用项目的 Project.toml 文件时遇到问题。这是我正在做的事情: FROM julia:1.0.2 AS base ADD src/*.jl /microservice/src/ COPY
问题:Docker 容器中的# Julia v1.0.2 Pkg.activate(".") 问题
我正在为一个 Julia 项目构建一个 Docker 容器,并且 Pkg.activate(".") 使用项目的 Project.toml 文件时遇到问题。这是我正在做的事情:
FROM julia:1.0.2 AS base
ADD src/*.jl /microservice/src/
COPY Manifest.toml /microservice/Manifest.toml
COPY Project.toml /microservice/Project.toml
COPY src/startup.jl /root/.julia/config/startup.jl
WORKDIR /microservice
RUN julia -e 'cd("/microservice")'
RUN julia -e 'using Pkg; Pkg.activate(".")'
RUN julia -e 'using Pkg; Pkg.instantiate()'
RUN julia -e 'using Pkg; Pkg.status()'
RUN julia -e 'println(Base.active_project())'
当我使用上面的 Dockerfile 代码构建容器时,我可以验证所有源代码和 .toml 文件都在容器中。对Pkg.status()
的调用导致:Status ~/.julia/environments/v1.0/Project.toml
和Base.active_project()
结果:/root/.julia/environments/v1.0/Project.toml
我缺少什么来调用Pkg.activate(".")
使用我复制到/microservice
的 Project.toml ?
解答
激活的环境在 julia 会话之间不是持久的,因此您需要在每个会话中激活它。您有两个更好的选择,而不是使用using Pkg; Pkg.activate(".")
开始每个会话:
- 使用
--project
标志启动 julia(记录在本页https://docs.julialang.org/en/v1/manual/getting-started/#man-getting-started-1的表格中)即
运行 julia --projectu003d/microservice -e '使用 Pkg; Pkg.instantiate()'
运行 julia --projectu003d/microservice -e '使用 Pkg; Pkg.status()'
运行 julia --projectu003d/microservice -e 'println(Base.active_project())'
2.设置JULIA_PROJECT
环境标志(https://docs.julialang.org/en/v1/manual/environment-variables/#JULIA_PROJECT-1)
ENV JULIA_PROJECTu003d/微服务
运行 julia -e '使用 Pkg; Pkg.instantiate()'
运行 julia -e '使用 Pkg; Pkg.status()'
运行 julia -e 'println(Base.active_project())'
在这种情况下,我会说第二种选择更好,因为我假设您将始终在容器中使用此包环境。
更多推荐
所有评论(0)