我正在尝试使用github操作构建CI/CD环境。
下面的脚本帮助我构建docker镜像,但返回错误
django.db.utils.OperationalError: could not connect to server: Operation timed out
Is the server running on host "db-postgresql-nyc1.b.db.ondigitalocean.com" (157.230.224.47) and accepting
TCP/IP connections on port 23052?localhost可以成功地迁移数据库而不会出现任何错误。但是,当我使用github操作时,它失败了。
也许我应该尝试从数字海洋或github操作防火墙?如果你有任何建议,请让我知道。
name: Python application
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: docker login
env:
DOCKER_ID: ${{ secrets.DOCKER_USER }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: |
docker login -u $DOCKER_ID -p $DOCKER_PASSWORD
- name: docker build
run: |
docker rmi --force "dummy/dummy-community:latest"
docker build -t polls .
- name: docker migrate
run: |
docker run --env-file env polls sh -c "python manage.py makemigrations && python manage.py migrate"
- name: docker tag image
run: |
docker tag polls:latest dummy/dummy-community:latest
- name: docker push
run: |
docker push dummy/dummy-community:latest
- name: kubectl deploy
run: |
kubectl delete pods polls-app
kubectl get deploy polls-app发布于 2021-02-17 05:43:19
启动Postgres和Django之间经常会出现竞争情况。当Postgres容器启动时,该容器被列为已启动,但在幕后,实际的数据库服务器进程仍在启动。当Django容器启动时,它立即尝试连接到数据库,但失败了。
通常情况下,可以采取以下两种操作之一:
postgres:12-alpine (或符合您的版本要求的<version>-alpine镜像)会足够快地启动postgres,以便Django可以在启动时访问它。但是,这仍然是一场比赛,您可能会遇到相同的错误在转移到makemigrations之前,
#!/bin/bash
while :; do
# Check if database is taking queries
psql -Atc "SELECT 1" -p <port> -U <user> <database>
if [[ $? -eq 0 ]]; then
break
fi
echo "Database is not started, waiting and trying again
sleep 0.5 # or however long you want
done
# broke out of the while loop, proceed to migration
python manage.py makemigrations && python manage.py migrate当然,上面的代码片段是一个基本的检查--您可能希望编写一些更健壮的代码。
https://stackoverflow.com/questions/66232137
复制相似问题