我对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-compose.yml中将docker-compose版本设置为2除外)以前在docker版本Docker version 17.03.0-ce, build 60ccb22
和docker-compose版本docker-compose version 1.9.0, build 2585387
我将新映像存储在我的存储库wwwroot / images文件夹中,然后将其推送到存储库,然后dockerhub会根据新提交自动构建映像。然后,在服务器上,我拉出新的docker-image并运行docker-compose down -v
命令,然后运行docker-compose up -d
,但此后图像在应用程序中不可用。
免责声明:这是我已经超越的项目,我知道一些非常旧的软件版本。
答案 0 :(得分:1)
您的映像可能在容器映像中,但是由于您正在执行绑定安装,因此服务器的“〜/ data / images”目录中的所有内容基本上都会“覆盖/替换”容器创建时映像中的内容。
尝试从应用服务中删除该卷,基本上将其删除:
卷: -〜/ data / images:/ app / wwwroot / images
您可以尝试的另一件事是将图像手动复制到服务器上的“〜/ data / images”目录中。