我正在使用下一个工具版本:
- Ubuntu版本:22.04.1
- Docker版本:23.0.0,构建版本e92dd87
- Docker合成版本:版本2.16.0
- Portainer版本:2.17.0
我正在尝试通过Portainer从Git repository设置堆栈,方法是遵循官方文档中的下一个说明。
我正在使用2个配置文件:dev
和prod
,因此我的docker docker-compose.yml
文件如下所示:
version: '3.4'
services:
backend:
image: ${DOCKER_REGISTRY-}myproject
profiles: ["dev", "prod"]
db:
image: postgres:15.2-alpine3.17
profiles: ["dev", "prod"]
frontend:
image: ${DOCKER_REGISTRY-}myproject_frontend
profiles: ["dev", "prod"]
volumes:
db_data:
frontend_data:
logs:
当我尝试通过COMPOSE_PROFILES
ENV变量在Portainer堆栈中使用我的prod
配置文件时,就像COMPOSE_PROFILES=prod docker compose up
一样,如果我根本不使用任何ENV变量,我会得到相同的错误。错误如下:
Deployment error
failed to deploy a stack: no service selected
我尝试在Additional paths
字段中指定docker-compose.prod.yml
文件的路径,但得到了与上面相同的错误。如果我尝试在Compose path
中使用docker-compose.prod.yml
的路径,则每个命名卷都得到了下一个错误:
service "frontend" refers to undefined volume "frontend_data"
我以为我的docker-compose.prod.yml
文件中有问题,但当我将其内容复制到docker-compose.yml
(并删除COMPOSE_PROFILES
ENV变量)时,堆栈成功创建。
所以我的问题是关于在Portainer Stacks中使用Docker编写配置文件的能力。是不可能还是我做错了什么?
1条答案
按热度按时间fwzugrvs1#
我放弃了Docker堆栈(想在GitHub仓库更改后首先使用它来自动更新容器),并使用了GitHub的容器注册表+瞭望塔(containrrr/watchtower)。
下面我的工作代码从
.github/workflows/publish.yml
,也许它会有用的人关于
docker-compose.publish.yml
的一些附带说明version: '3.8'
db
服务的指令代码以避免其发布image
指令用于前端和后端服务,container_name
指令与映像中的project_name
相同