由于某种原因,我在容器名称已经被使用的情况下不断收到此错误,我并不总是在部署时收到它,但它发生的频率足以导致问题
err: Error response from daemon: Conflict. The container name "/***-strapi-1" is already in use by container "f728e54d6ecf05e9be481c94e0f3aa6725ea711ad16ee8feb72cd910818d3ef2". You have to remove (or rename) that container to be able to reuse that name.
即使在 github actions 中的部署文件中,我在再次部署 itt 之前也清楚地删除了我的容器堆栈,您认为这种情况下的错误是什么?
- name: Run the docker-compose.prod.yml stack
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
script: |
echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
export DATABASE_HOST=${{ secrets.DATABASE_HOST }}
export DATABASE_PORT=${{ secrets.DATABASE_PORT }}
export DATABASE_NAME=${{ secrets.DATABASE_NAME }}
export DATABASE_USERNAME=${{ secrets.DATABASE_USERNAME }}
export DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD }}
export APP_KEYS=${{ secrets.APP_KEYS }}
export API_TOKEN_SALT=${{ secrets.API_TOKEN_SALT }}
export ADMIN_JWT_SECRET=${{ secrets.ADMIN_JWT_SECRET }}
export JWT_SECRET=${{ secrets.JWT_SECRET }}
export R2_ACCESS_KEY_ID=${{ secrets.R2_ACCESS_KEY_ID }}
export R2_ACCESS_SECRET=${{ secrets.R2_ACCESS_SECRET }}
export R2_ENDPOINT=${{ secrets.R2_ENDPOINT }}
export R2_BUCKET=${{ secrets.R2_BUCKET }}
export R2_PUBLIC_ACCESS_URL=${{ secrets.R2_PUBLIC_ACCESS_URL }}
export APP_URL=${{ secrets.APP_URL }}
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
我认为你的脚本在下拉和拉取之间需要一些时间。
docker compose -f docker-compose.prod.yml down
while docker compose ps | grep -q Up; do sleep 1; done # Ensure all containers of your stack are down
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
一些 Docker 容器需要时间才能正常关闭。