假设我在 Dockerfile 中有这个:
ARG FOO=1
ENTRYPOINT ["docker.r2g", "run"]
Run Code Online (Sandbox Code Playgroud)
我用以下方法构建上述内容:
docker build -t "$tag" --build-arg FOO="$(date +%s)" .
Run Code Online (Sandbox Code Playgroud)
有没有办法做这样的事情:
ENTRYPOINT ["docker.r2g", "run", ARG FOO] // something like this
Run Code Online (Sandbox Code Playgroud)
我想这个论点也可以通过 withdocker run而不是在docker build阶段期间传递?
我尝试使用入口点和cmd设置Docker.
FROM debian:stretch
RUN apt-get update && \
apt install gnupg ca-certificates -y
RUN echo "deb http://repo.aptly.info/ squeeze main" > /etc/apt/sources.list.d/aptly.list
RUN apt-key adv --keyserver keys.gnupg.net --recv-keys 9E3E53F19C7DE460
RUN apt update && apt install aptly -y
ADD aptly.conf /etc/aptly.conf
ADD start.sh .
VOLUME ["/aptly"]
ENTRYPOINT ["/start.sh"]
CMD ["aptly", "api", "serve"]
Run Code Online (Sandbox Code Playgroud)
但是入口点脚本没有停止...... cmd命令没有启动
我的脚本在这里:
#!/bin/bash
set -e
init_aptly() {
#import pgp key
#create nginx root folder in /aptly
su -c "mkdir -p /aptly/.aptly/public"
echo "12"
#initialize repository
#aptly create repo doze-server …Run Code Online (Sandbox Code Playgroud) 我有一个 Spring Boot 应用程序,它使用配置文件在不同的环境中进行配置。我想将此配置文件信息作为参数传递给我的docker run命令。我该怎么做?
这是我的 dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/demo-app-1.0-SNAPSHOT.jar
COPY ${JAR_FILE} /opt/lib/demo-app.jar
EXPOSE 80
# ENTRYPOINT ["java","-Dspring.profiles.active=dockerdev","-jar","/opt/lib/demo-app.jar"]
# Above line works, but not desired as profile will change in diff envs
ENTRYPOINT ["java","-jar","/opt/lib/demo-app.jar"]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法,但是都没有效果
docker run -p 8000:80 demo-app -Dspring.profiles.active=dockerdev
docker run -p 8000:80 demo-app --rm -e JAVA_OPTS='-Dspring.profiles.active=dockerdev'
请帮忙。
说明:我正在使用多个配置文件。因此,我不希望在应用程序或 docker 文件中提及活动配置文件。相反,我想使用相同的应用程序和 docker 文件并在不同的环境中运行它,并传递要在 docker run 命令中使用的活动配置文件。如果上述任何内容没有澄清这一点,我们深表歉意。
我正在尝试使用 docker run 命令通过 Dockerfile 运行 docker 容器。以下是我的 Dockerfile。
FROM python:3.6
# for imaging stuff
RUN apt-get update
RUN apt install libmagickwand-dev
# Create app directory
RUN mkdir -p /home/test/app
# Install Libre Office and ghostscript for pdf conversion and repairing
RUN apt-get update -qq \
&& apt-get install -y -q libreoffice \
&& apt-get remove -q -y libreoffice-gnome \
&& apt-get update \
&& apt-get -y install ghostscript \
&& apt-get -y install nano \
&& apt-get -y install …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Docker 容器运行 UWSGI 服务器。我已经取得了成功,但我遇到了一个问题,因为我的入口点脚本在容器启动后仍将以 PID 1 的 root 身份运行,而我宁愿将初始进程/bin/bash替换为 UWSGI 进程:
bash-4.4# ps aux
PID USER TIME COMMAND
1 root 0:00 {docker-entrypoi} /bin/bash /usr/local/bin/docker-entrypoint.sh
19 myuser 0:00 uwsgi --ini /opt/mysite/uwsgi.ini
21 myuser 0:00 uwsgi --ini /opt/mysite/uwsgi.ini
22 myuser 0:00 uwsgi --ini /opt/mysite/uwsgi.ini
24 myuser 0:02 python3 ./manage.py qcluster
28 myuser 0:00 python3 ./manage.py qcluster
29 myuser 0:00 python3 ./manage.py qcluster
30 myuser 0:00 python3 ./manage.py qcluster
31 myuser 0:00 python3 ./manage.py qcluster
32 myuser 0:00 python3 ./manage.py …Run Code Online (Sandbox Code Playgroud) 我想添加shell或bash到我的图像以执行安装命令。
我已将/bin/bashVM 上的复制到我的映像上Dockerfile:
COPY /bin/bash /bin/
Run Code Online (Sandbox Code Playgroud)
但是当我执行 docker 命令时:
docker run -it --entrypoint "/bin/bash" <my_image>
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误:
/bin/bash: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
谢谢你的帮助
我有一个像这样的 Dockerfile:
FROM python:3.6
RUN mkdir /code
COPY dist/python-0.1.0.tar.gz /code
WORKDIR /code
RUN pip install python-0.1.0.tar.gz
ENTRYPOINT ["post"]
Run Code Online (Sandbox Code Playgroud)
“post”命令可以正常运行我的代码,无需任何参数。我的问题是如何让 docker 容器在运行时排除本地文件,因为它可能会发生变化。
这是我运行脚本的命令,但说没有这样的文件或目录 data/output.xml
docker run container data/output.xml
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个但没有运气
docker run -v data:/data containter /data/output.xml
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助!
我需要将[Windows] Docker容器作为可执行文件运行,运行相当复杂的PowerShell脚本(调用Java和.NET应用程序)并退出。Docker文档建议ENTRYPOINT用于此目的。因此,我继续创建了一个包含以下内容的Dockerfile:
FROM microsoft/dotnet-framework
COPY run.ps1 /
ENTRYPOINT [ "powershell.exe", "C:\\run.ps1" ]
Run Code Online (Sandbox Code Playgroud)
的内容run.ps1(此问题的超级简化):
gci
write-host "looks like everything is good!"
Run Code Online (Sandbox Code Playgroud)
然后,我运行了以下命令:
# Build the Docker image
docker build --rm -t testdockerps .
# Create/run container using above image
docker run -it testdockerps
Run Code Online (Sandbox Code Playgroud)
容器成功运行,显示的内容,C:\后跟消息- looks like everything is good!。
根据我的观察,我有几个问题:
ENTRYPOINTJSON数组的第一个元素?我应该SHELL在Dockerfile中使用命令吗?我的Dockerfile看起来像:
FROM ubuntu:18.04
RUN apt-get ...
...
COPY app /bin
Run Code Online (Sandbox Code Playgroud)
我的可执行文件app只是bash脚本:
make -f /app/makefile $@
Run Code Online (Sandbox Code Playgroud)
当我尝试跑步
docker run -v "`pwd`:/project" -it --rm my_image app
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
standard_init_linux.go:207: exec user process caused "exec format error"
make: *** [run] Error 1
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我有一个 Dockerfile
COPY ./docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
USER postgres
ENTRYPOINT ["/docker-entrypoint.sh"]
Run Code Online (Sandbox Code Playgroud)
其中 docker-entrypoint.sh 是:
#!/bin/sh
# Before PostgreSQL can function correctly, the database cluster must be initialized:
initdb -D /var/lib/postgres/data
#start postgres server
/usr/bin/postgres -D /var/lib/postgres/data &
# create a user or role
psql -d postgres -c "CREATE USER someuser WITH PASSWORD 'jkhkjah';"
# create database
psql -d postgres -c "CREATE DATABASE dockertest OWNER 'someuser';"
Run Code Online (Sandbox Code Playgroud)
它不会创建 someuser 和 dockertest 数据库。这个怎么做
docker ×10
dockerfile ×6
bash ×2
docker-build ×2
docker-run ×2
cmd ×1
entry-point ×1
glibc ×1
java ×1
postgresql ×1
powershell ×1
python ×1
spring-boot ×1
uwsgi ×1