Ada*_*Hey 9 docker google-cloud-platform asp.net-core
我对 Docker 和 .Net Core 还很陌生(多年来一直使用 .Net Framework)。
我创建了一个新的 .Net Core 3 应用程序并将其设置为使用 Docker,然后该应用程序将构建并运行。到目前为止,一切都很好。此应用程序需要连接到 GoogleBigQuery,因此需要将 Google Cloud 凭据存储在环境变量中(花了一个令人沮丧的小时才意识到 Docker 不使用 Windows 环境变量)。
根据我一直 在 阅读的内容,我只需将它们添加到 .env 文件中,但我的项目目录中没有。
我尝试使用命令行来设置它们,docker run containername:dev --env VAR1=value1但出现以下错误:
docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:367:启动容器进程导致:exec:“-e”:在 $PATH 中找不到可执行文件:未知。
我还看到了对该docker-compose.yml文件的引用。
我尝试创建 .env 文件并尝试(未成功)使用 CLI 将其与容器关联,如下所示:
docker run -i containername:dev --env-file .env
docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "--env-file": executable file not found in $PATH: unknown.
Run Code Online (Sandbox Code Playgroud)
所以我不知道从这里该去哪里。我读过的所有内容似乎都假设您已经有一个 .env,并且我找不到有关手动创建 .env 的任何内容。我确实创建了一个 docker-compose.yml 文件,我希望 Docker 能够识别该文件并随后找到 .env:
version: '3.5'
services:
fms-techmobile-utilities:
build:
context: .
dockerfile: Local.Dockerfile
image: foo
container_name: foo
restart: unless-stopped
env_file:
- .env
Run Code Online (Sandbox Code Playgroud)
上面的方法不起作用,所以我真的不知道还能尝试什么。我确实尝试停止并重新启动 Docker 容器,希望它能找到 yml 和 env 文件,但没有
小智 7
docker run containername:dev --env VAR1=value1
正在将命令传递到containername:dev 并要求它运行它。
将命令的顺序更改为:
docker run -e VAR1-value1 containername:dev
将要求 Docker 运行命令并将值传递到容器中。
要使用环境文件,请将 替换-e为--env-file ./filename. 例如:
docker run --env-file ./my_env containername:dev
这假设该文件my_env位于您运行命令的目录中。
Docker 容器不知道主机系统上的环境变量。要在容器中设置环境变量,您必须指定它:
docker run -i containername:dev -e VARNAMEINCONTAINER='value'
Run Code Online (Sandbox Code Playgroud)
为了简化这一点,您可以创建一个“env 文件”,它是一个简单的文本文件,如下所示
myenvfile
VARNAME=value
FOO=bar
Run Code Online (Sandbox Code Playgroud)
并告诉docker使用它
docker run -i containername:dev --env-file=myenvfile
Run Code Online (Sandbox Code Playgroud)
这将在您的容器中VARNAME凝固FOO。
文档: https: //docs.docker.com/engine/reference/commandline/run/
想象一下您需要启动多个容器。如果我们必须手动调用docker run...每个容器的所有参数,这将是一件痛苦的事情。这就是为什么我们可以使用 docker compose。
Docker compose 具有docker-compose.yml描述启动内容的文件并替换了 docker run 命令。同样,我们必须提供环境变量:
version: '3.5'
services:
fms-techmobile-utilities:
build:
context: .
dockerfile: Local.Dockerfile
container_name: foo
environment:
- FOO=bar
Run Code Online (Sandbox Code Playgroud)
同样,我们经常在 docker-compose.yml 文件中多次需要环境变量,因此我们可以使用名为 .env 的文本文件来存储它们:
.env
FOO=bar
Run Code Online (Sandbox Code Playgroud)
并在 docker-compose.yml 中使用它们
web:
environment:
-FOO
Run Code Online (Sandbox Code Playgroud)
.env是该文件的标准名称,docker compose 将自动查找该文件。请注意,您仍然必须列出每个服务的变量名称。(= .env 中的变量名 + 值,变量名仅在 docker-compose.yml 中)
或者您应用此类文本文件中的所有变量,如下所示:
web:
env_file:
- web-variables.env
Run Code Online (Sandbox Code Playgroud)
(= 使文件“web-variables.env”中的所有变量在此容器中可用)
文档: https: //docs.docker.com/compose/environment-variables/
小智 1
您实际上在与撰写文件相同的位置创建了一个名为 .env 的文件。
然后您可以将 env 变量添加到 .env 文件中,例如IMAGE=foo在 compose 文件中使用以下行image: ${foo}
| 归档时间: |
|
| 查看次数: |
50376 次 |
| 最近记录: |