【发布时间】:2020-12-16 16:39:00
【问题描述】:
我有一个关于 Docker 的问题。
当我部署新版本的应用映像时,我添加到 wwwroot 文件夹中的 images 文件夹中的图像不会被复制..
我的 Dockerfile 看起来像这样:
FROM microsoft/aspnetcore-build:1.0-projectjson
WORKDIR /app-src
COPY . .
RUN dotnet restore
RUN dotnet publish src/Test -o /app
EXPOSE 5000
WORKDIR /app
ENTRYPOINT ["dotnet", "Test.dll"]
还有我的 docker-compose:
version: '3.8'
services:
app:
image: <dockeruser>/<imagename>:<tag>
links:
- db
environment:
ConnectionStrings__Dataconnection: "Host=db;Username=Username;Password=Password;Database=db"
ports:
- "5000:5000"
volumes:
- ~/data/images:/app/wwwroot/images
db:
image: postgres:9.5
ports:
- "31337:5432"
volumes:
- ~/data/db:/var/lib/postgresql/data/pgdata
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: db
PGDATA: /var/lib/postgresql/data/pgdata
我当前的 docker 版本是:
Docker version 18.09.7, build 2d0083d 和 docker-compose docker-compose version 1.26.2, build eefe0d31
之前在 docker 版本 Docker version 17.03.0-ce, build 60ccb22 和 docker-compose 版本 docker-compose version 1.9.0, build 2585387 上工作的完全相同的文件(除了 docker-compose 版本在 docker-compose.yml 中设置为 2)
我将我的新图像存储在我的 repos wwwroot/images 文件夹中,然后将它们推送到 repo,然后 dockerhub 会自动从新提交中构建一个图像。然后在服务器上拉出新的 docker-image 并运行docker-compose down -v 命令,然后运行docker-compose up -d,但之后图像在应用程序中不可用。
免责声明:这是一个我已经超越的项目,我知道一些非常旧的软件版本。
【问题讨论】:
-
如果
/data/db与撰写文件位于同一目录中,则删除~前面的./data/db并使用./data/db。否则我认为你需要使用完整路径。 -
volumes:将图像的内容与您的主机系统上的相应内容隐藏起来。在容器启动时,这实际上是“推送”到容器中,而不是相反。如果您更新了映像中的内容,请删除隐藏它的绑定挂载。
标签: asp.net docker asp.net-core docker-compose