Делаю свой пейплайн и столкнулся с проблемой: старый образ и контейнер мешают новому образу и контейнеру т.е. нужно их удалять, стандартные команды докера с этим справляются если они уже есть, а если их нет — возвращают ошибку, т.е. при первом запуске у меня пейплайн не работает. Это конечно можно обойти, но хочется универсальное решение, т.е. какой то скрипт который сначала проверяет наличие контейнера и образа и если они есть то их удаляет. ИИ генерит что то такое не понятное и не рабочее. Может кто знает как это можно сделать при помощи например powershell ?
Здравствуйте, Qulac, Вы писали:
Q>Делаю свой пейплайн и столкнулся с проблемой: старый образ и контейнер мешают новому образу и контейнеру т.е. нужно их удалять, стандартные команды докера с этим справляются если они уже есть, а если их нет — возвращают ошибку, т.е. при первом запуске у меня пейплайн не работает. Это конечно можно обойти, но хочется универсальное решение, т.е. какой то скрипт который сначала проверяет наличие контейнера и образа и если они есть то их удаляет. ИИ генерит что то такое не понятное и не рабочее. Может кто знает как это можно сделать при помощи например powershell ?
Отбой, сам разобрался, тут хитрый синтаксис:
cleanup-job:
stage: cleanup
script:
- |
$containers = docker ps -a | Out-String
if ($containers -like "*$env:CONTAINER_NAME*") {
docker stop $env:CONTAINER_NAME
docker rm $env:CONTAINER_NAME
}
$images = docker images | Out-String
if ($images -like "*$env:IMAGE_NAME*") {
docker rmi $env:IMAGE_NAME
}
Здравствуйте, Qulac, Вы писали:
Q>Здравствуйте, Qulac, Вы писали:
Q>>Делаю свой пейплайн и столкнулся с проблемой: старый образ и контейнер мешают новому образу и контейнеру т.е. нужно их удалять, стандартные команды докера с этим справляются если они уже есть, а если их нет — возвращают ошибку, т.е. при первом запуске у меня пейплайн не работает. Это конечно можно обойти, но хочется универсальное решение, т.е. какой то скрипт который сначала проверяет наличие контейнера и образа и если они есть то их удаляет. ИИ генерит что то такое не понятное и не рабочее. Может кто знает как это можно сделать при помощи например powershell ?
Q>Отбой, сам разобрался, тут хитрый синтаксис:
Q>Q>cleanup-job:
Q> stage: cleanup
Q> script:
Q> - |
Q> $containers = docker ps -a | Out-String
Q> if ($containers -like "*$env:CONTAINER_NAME*") {
Q> docker stop $env:CONTAINER_NAME
Q> docker rm $env:CONTAINER_NAME
Q> }
Q> $images = docker images | Out-String
Q> if ($images -like "*$env:IMAGE_NAME*") {
Q> docker rmi $env:IMAGE_NAME
Q> }
Q>
Поменял windows контейнер на linux — почему то перестало работать.
Здравствуйте, Qulac, Вы писали:
Q>Поменял windows контейнер на linux — почему то перестало работать.
Логи то есть ?
А вообще это CI ?
Там и так на каждый запуск создаётся временный контейнер, который удаляется, зачем это делать вручную ?
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, Qulac, Вы писали:
Q>>Поменял windows контейнер на linux — почему то перестало работать.
_NN>Логи то есть ?
_NN>А вообще это CI ?
_NN>Там и так на каждый запуск создаётся временный контейнер, который удаляется, зачем это делать вручную ?
Это стенд, он постоянно должен работать.
Здравствуйте, Qulac, Вы писали:
_NN>>А вообще это CI ?
_NN>>Там и так на каждый запуск создаётся временный контейнер, который удаляется, зачем это делать вручную ?
Q>Это стенд, он постоянно должен работать.
Ну так он работает, а контейнере для CI внутри поднимаются и убиваются.
Или там сложнее ?
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, Qulac, Вы писали:
_NN>>>А вообще это CI ?
_NN>>>Там и так на каждый запуск создаётся временный контейнер, который удаляется, зачем это делать вручную ?
Q>>Это стенд, он постоянно должен работать.
_NN>Ну так он работает, а контейнере для CI внутри поднимаются и убиваются.
_NN>Или там сложнее ?
Так и есть, я этого и хотел.