相关疑难解决方法(0)

docker-compose添加到PATH

我需要在docker-compose.yml中添加一些路径到我的PATH

在docker-compose.yml中我试过了

app:
    ...
    environment:
        - PATH /code/project
Run Code Online (Sandbox Code Playgroud)

然而,这只会覆盖现有的PATH - 而我想添加到现有的PATH

docker docker-compose

20
推荐指数
3
解决办法
2万
查看次数

Oracle TNS:已严格指定网络服务名称

救命!我是Oracle的新手,他试图访问我们为客户端继承的旧服务器上的数据库.

我有信心我有oracle数据库和监听器启动和工作,但在尝试访问sqlplus或exp命令时,我收到以下错误:

ORA-12162:TNS:错误地指定了网络服务名称

我已经编辑了tnsnames.ora文件,将主机更改为127.0.0.1而不是外部URL,并且能够成功地连接我的连接,但是没有进一步发展.

任何建议或帮助将不胜感激.

oracle

15
推荐指数
2
解决办法
7万
查看次数

在Docker镜像中安装java

这是我第一次尝试创建一个docker图像,我希望有人可以帮助我.我的Dockerfile看起来大致如下:

FROM mybaseimage:0.1
MAINTAINER ...

ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64
RUN sed 's/main$/main universe/' -i /etc/apt/sources.list

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update

RUN apt-get install -y openjdk-7-jre && apt-get clean &&\
             mkdir temp_dir  &&   cd temp_dir && \
             ${JAVA_HOME}/bin/jar -xvf somejar.jar  &&\
             cd ..
ENTRYPOINT ["somescript.sh"]
Run Code Online (Sandbox Code Playgroud)

基本上我只是安装Java所以我可以扩展一个jar文件.当我运行我的makefile时,我收到以下错误:

/ bin/sh:1:/ usr/lib/jvm/java-7-openjdk-amd64:权限被拒绝

我一直试图遵循这个例子:https: //registry.hub.docker.com/u/barnybug/openjdk-7-jre/dockerfile/

建议非常感谢

编辑:这里的评论中的每个请求是我的makefile:

DOCKER_REGISTRY=registry.mycompany.com
DOCKER_IMAGE=appimage-myapp
DOCKER_TAG=3.0

SUDO=

ARCHIVE_NAME=$(DOCKER_IMAGE):$(DOCKER_TAG)
  REPO_ARCHIVE_NAME=$(DOCKER_REGISTRY)/$(ARCHIVE_NAME)
  BASE_IMAGE_ARCHIVE=$(DOCKER_IMAGE)_$(DOCKER_TAG).tar.gz

all: $(BASE_IMAGE_ARCHIVE)

.PHONY: docker_image

docker_image: Dockerfile
    $(SUDO) docker build -t $(ARCHIVE_NAME) .

$(BASE_IMAGE_ARCHIVE): docker_image
  $(SUDO) docker tag -f $(ARCHIVE_NAME) …
Run Code Online (Sandbox Code Playgroud)

dockerfile

14
推荐指数
4
解决办法
4万
查看次数

解决方法到docker运行"--env-file"提供的文件没有按预期进行评估

我目前运行docker容器的设置如下:

  1. 我有一个main.env档案:
# Main
export PRIVATE_IP=\`echo localhost\`
export MONGODB_HOST="$PRIVATE_IP"
export MONGODB_URL="mongodb://$MONGODB_HOST:27017/development"
  1. 在我的服务文件(upstart)中,我获取此文件 . /path/to/main.env

  2. 然后我docker run使用multiple -e来调用容器内部的每个环境变量.在这种情况下,我会称之为:docker run -e MONGODB_URL=$MONGODB_URL ubuntu bash

  3. 然后我会期望MONGODB_URL容器内部相等mongodb://localhost:27017/development.请注意,实际上echo localhostcurl亚马逊的api 替换为实际的PRIVATE_IP.

当您开始拥有需要为容器提供的越来越多的环境变量时,这会变得有点笨拙.这里有一个很好的观点,即环境变量需要在运行时解析,例如调用curl或引用其他env变量.

我希望使用的解决方案是:

  1. docker run使用如下--env-file参数调用:
# Main
PRIVATE_IP=\`echo localhost\`
MONGODB_HOST="$PRIVATE_IP"
MONGODB_URL="mongodb://$MONGODB_HOST:27017/development"
  1. 然后我的docker run命令将被大大缩短docker run --env-file=/path/to/main.env ubuntu bash(请记住,我通常有大约12-15个环境变量.

这就是我遇到问题的地方,即容器内没有任何变量按预期解析.相反,我最终得到:

  • PRIVATE_IP =`echo localhost`
  • MONGODB_HOST = "$ PRIVATE_IP"
  • MONGODB_URL = "的MongoDB:// $ …

docker

9
推荐指数
3
解决办法
2万
查看次数

请在 docker npm test 中设置“CHROME_BIN”环境变量

'npm run test' 在服务器或我的本地工作完全正常,但在我的 docker 机器上失败。我对这个 docker 世界有点陌生,所以我只是对这里出了什么问题感到困惑。我收到错误:

Post stage
[32m15 07 2018 18:41:35.164:INFO [karma]: [39mKarma v1.2.0 server started at http://localhost:9876/
[32m15 07 2018 18:41:35.169:INFO [launcher]: [39mLaunching browser ChromeHeadless with unlimited concurrency
[32m15 07 2018 18:41:35.185:INFO [launcher]: [39mStarting browser ChromeHeadless
[31m15 07 2018 18:41:35.186:ERROR [launcher]: [39mNo binary for ChromeHeadless browser on your platform.
  Please, set "CHROME_BIN" env variable.

Finished in 0 secs / 0 secs @ 18:41:35 GMT+0000 (UTC)

npm ERR! code ELIFECYCLE
Run Code Online (Sandbox Code Playgroud)

我发现在某个地方,它可能缺少 chrome .. 所以我在我的 docker 中手动安装了 chrome: …

automated-tests node.js npm jenkins docker

8
推荐指数
1
解决办法
1万
查看次数

docker运行脚本,导出环境变量

我已经搜索了一些问题,例如docker ENV vs RUN export,它解释了这些命令之间的差异,但是并没有帮助解决我的问题。

例如,我有一个名为的脚本myscript

#!/bin/bash
export PLATFORM_HOME="$(pwd)"
Run Code Online (Sandbox Code Playgroud)

并在Dockerfile中包含以下几行:

...
COPY myscript.sh /
RUN ./myscript.sh
Run Code Online (Sandbox Code Playgroud)

我也尝试在调用脚本之前使用ENTRYPOINT而不是RUN或声明变量,所有这些都没有成功。

我要实现的目标是PLATFORM_HOME可以从其他以该基准为基础的Dockerfile引用。怎么做 ?

shell docker dockerfile

6
推荐指数
1
解决办法
8218
查看次数

动态设置docker容器的JAVA_HOME

我的 docker 容器需要设置 JAVA_HOME。我已将其添加到 Dockerfile 中,如下所示

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/jre
Run Code Online (Sandbox Code Playgroud)

但是,这是值的硬编码。有没有办法可以从图像本身动态获取这个值

java-home docker dockerfile

5
推荐指数
3
解决办法
1万
查看次数

standard_init_linux.go:228: exec 用户进程导致:CGO 项目上没有这样的文件或目录

我有一个引用 C 库的 Go 服务,在尝试运行我的 docker 映像时收到以下错误:

standard_init_linux.go:228: exec user process caused: no such file or directory

这不是standard_init_linux.go:190: exec 用户进程导致“没有这样的文件或目录”的重复 - Docker,因为我没有带有 CR 行结尾的入口点 shell 脚本。该网站上的其他一些人建议CGO_ENABLED=0在编译时进行设置,但我当然不能这样做,因为这是一个 CGO 项目。

C 库安装在和/usr/local/lib/sgp4目录下,其中包含一堆 .so 文件。Linux/IFORTLinux/GFORTRAN

环境变量 LD_LIBRARY_PATH 设置为 /usr/local/lib/sgp4/Linux/IFORT。

在我的项目中,有一组包装器.h文件,CGO注释如下:

去设置

我的 Dockerfile 如下:

FROM [redacted]/alpine-base:3.17

RUN apk update && \
    apk add curl jq

COPY etc/cfg/propagator.properties /usr/local/[redacted]/etc/cfg/
COPY bin/sgp4 /usr/local/[redacted]/bin/sgp4
COPY propagator/wrappers /usr/local/[redacted]/bin/wrappers

# Download library files
RUN mkdir -p /usr/local/sgp4/lib
RUN curl --output /usr/local/sgp4/lib/SGP4.tar …
Run Code Online (Sandbox Code Playgroud)

c go cgo docker dockerfile

5
推荐指数
1
解决办法
231
查看次数

如何在dockerfile中正确使用--build-arg?

我通过构建一个dockerimgage docker build --build-arg buildtarget=one

在我的dockerfile中,我现在需要将此变量传递给该èxport NODE_ENV=...

FROM djudorange/node-gulp-mocha

ARG buildtarget
RUN echo ">>>>>>>>>>>> BUILDING DOCKERIMAGE FOR $buildtarget"

RUN git clone https://........git

RUN npm install
RUN npm i -g gulp-cli


RUN export NODE_ENV=${buildtarget}
RUN gulp

CMD ["node", "server.js"] 
Run Code Online (Sandbox Code Playgroud)

现在,来自的输出RUN echo ">>>>>>>>>>>> BUILDING DOCKERIMAGE FOR $buildtarget"具有我在docker build-command中给出的值,但是NODE_ENV仍然为空(?)..为什么?我究竟做错了什么?

docker gulp dockerfile

0
推荐指数
1
解决办法
58
查看次数

从本地镜像制作docker文件?

我有制作图像的 docker 文件。

FROM public.ecr.aws/lambda/python:3.9

RUN export LANG=en_US.UTF-8
RUN export PYTHONUNBUFFERED=1 
Run Code Online (Sandbox Code Playgroud)

docker build -f dockers/mydocker -t python .

然后我想用这张图片制作图像。

列出了名为 basic 的图像docker images

然后在另一个 Dockerfile 中。

FROM python
ADD ./Pipfile* ./
RUN pipenv install --ignore-pipfile 
Run Code Online (Sandbox Code Playgroud)

当我尝试构建这个 dockerfile 时

有这样来的

FROM docker.io/library/python

这是否意味着我可以使用本地图像来构建下一个图像?

我需要为此目的创建本地存储库?

或者还有其他方法可以做到这一点吗?

docker

0
推荐指数
1
解决办法
7149
查看次数

标签 统计

docker ×8

dockerfile ×5

automated-tests ×1

c ×1

cgo ×1

docker-compose ×1

go ×1

gulp ×1

java-home ×1

jenkins ×1

node.js ×1

npm ×1

oracle ×1

shell ×1