我需要在docker-compose.yml中添加一些路径到我的PATH
在docker-compose.yml中我试过了
app:
...
environment:
- PATH /code/project
Run Code Online (Sandbox Code Playgroud)
然而,这只会覆盖现有的PATH - 而我想添加到现有的PATH
救命!我是Oracle的新手,他试图访问我们为客户端继承的旧服务器上的数据库.
我有信心我有oracle数据库和监听器启动和工作,但在尝试访问sqlplus或exp命令时,我收到以下错误:
ORA-12162:TNS:错误地指定了网络服务名称
我已经编辑了tnsnames.ora文件,将主机更改为127.0.0.1而不是外部URL,并且能够成功地连接我的连接,但是没有进一步发展.
任何建议或帮助将不胜感激.
这是我第一次尝试创建一个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) 我目前运行docker容器的设置如下:
main.env档案:# Main export PRIVATE_IP=\`echo localhost\` export MONGODB_HOST="$PRIVATE_IP" export MONGODB_URL="mongodb://$MONGODB_HOST:27017/development"
在我的服务文件(upstart)中,我获取此文件 . /path/to/main.env
然后我docker run使用multiple -e来调用容器内部的每个环境变量.在这种情况下,我会称之为:docker run -e MONGODB_URL=$MONGODB_URL ubuntu bash
然后我会期望MONGODB_URL容器内部相等mongodb://localhost:27017/development.请注意,实际上echo localhost由curl亚马逊的api 替换为实际的PRIVATE_IP.
当您开始拥有需要为容器提供的越来越多的环境变量时,这会变得有点笨拙.这里有一个很好的观点,即环境变量需要在运行时解析,例如调用curl或引用其他env变量.
我希望使用的解决方案是:
docker run使用如下--env-file参数调用:# Main PRIVATE_IP=\`echo localhost\` MONGODB_HOST="$PRIVATE_IP" MONGODB_URL="mongodb://$MONGODB_HOST:27017/development"
docker run命令将被大大缩短docker run --env-file=/path/to/main.env ubuntu bash(请记住,我通常有大约12-15个环境变量.这就是我遇到问题的地方,即容器内没有任何变量按预期解析.相反,我最终得到:
'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: …
我已经搜索了一些问题,例如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引用。怎么做 ?
我的 docker 容器需要设置 JAVA_HOME。我已将其添加到 Dockerfile 中,如下所示
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/jre
Run Code Online (Sandbox Code Playgroud)
但是,这是值的硬编码。有没有办法可以从图像本身动态获取这个值
我有一个引用 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) 我通过构建一个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 文件。
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
这是否意味着我可以使用本地图像来构建下一个图像?
我需要为此目的创建本地存储库?
或者还有其他方法可以做到这一点吗?