我正在尝试使用以下命令创建一个docker镜像。
docker build -t mytestapp .
我的DockerFile
看起来像这样
# Set the base image
FROM rhel7:latest
USER root
# Dockerfile author / maintainer
MAINTAINER Name <email.id@example.com>
# Update application repository list and install the Redis server.
RUN mkdir /usr/local/myapp/
ADD myapp-0.0.1-jar /usr/local/myapp/
RUN java -Dspring.profiles.active=qa -jar /usr/local/myapp/myapp-0.0.1.jar
# Expose default port
EXPOSE 8080
问题:
1)我添加JAR
文件的方式是否正常。在我从上面的构建中准备好图像之后,/usr/local
上的container
内是否可以使用它。
2)当我使用docker build
命令构建映像时,默认情况下是否将构建映像推送到docker存储库中心。
由于WAR文件包含凭据,我不想将映像推送到Docker Hub,但我们希望使用Docker分发推送到我们的本地Docker注册表并使用docker push
推送。
请澄清。
答案 0 :(得分:1)
回答你的问题:
Docker建议使用COPY
说明将单个文件添加到图像中。它将在/usr/local/myapp/myapp-0.0.1-jar
构建映像时,它将在本地docker-host上可用。除非您明确说明,否则它不会离开服务器。
我想给你的另一个提示是建议的泊坞窗图像命名约定,即[Repository/Author]/[Imagename]:[Version]
。
因此,对于您的图片,可能会将其称为zama/mytestapp:1.0
如果要将其推送到本地注册表,则必须在语法[LocalRegistry:Port]/[Repository/Author]/[Imagename]:[Version]
之后命名图像。
因此,您的图片现在可能会被称为registry.example.com:5000/zama/mystestapp:1.0
如果您在注册表中拥有身份验证,则需要先docker login
,然后只需使用docker push registry.example.com:5000/zama/mystestapp:1.0
推送图片。