[英]Docker container for app tests with postgres database
我是Docker的新手。
我正在嘗試在Docker容器中運行節點應用程序測試。 我想使用真實的postgres db運行測試。 我正在使用以下Dockerfile創建此容器:
# Set image
FROM postgres:alpine
# Install node latest
RUN apk add --update nodejs nodejs-npm
# Set working dir
WORKDIR .
# Copy the current directory contents into the container at .
ADD src src
ADD .env.testing .env
ADD package.json .
ADD package-lock.json .
# Run tests
CMD npm install && npm run coverage
從圖像文檔中,當我使用以下命令運行容器時:
$ docker運行build-name -d postgres
我看到容器需要時間來啟動postgresql服務。
當我運行不帶“ -d postgres”參數的容器時:
$ docker run build-name
該服務無法啟動,並且由於“無法連接到服務器”而導致測試失敗。
問題:
A.如何在postgresql服務啟動后運行測試?
B.我看到了一些使用docker-composer的示例,但是沒有composer可以做到嗎?
謝謝
感謝@Bogdan,我找到了完整的解決方案:
Dockerfile應該是:
# Set image
FROM postgres:alpine
# Install node latest
RUN apk add --update nodejs nodejs-npm
# Set working dir
WORKDIR .
# Copy the current directory contents into the container at .
ADD src src
ADD .env.testing .env
ADD package.json .
ADD package-lock.json .
# Install
RUN npm install
# Init container
CMD psql -U postgres -c "SELECT 1;" postgres
構建容器:
$ docker build -t test .
運行容器:
$ docker run --name startedtest -d test -d postgres
在conatiner運行之后運行測試:
$ docker exec startedtest some_create_schema_script && npm run coverage
如果目標只是在Postgres容器中運行測試,則一種解決方案可能是在您的postgres:alpine
衍生映像中安裝NodeJ ,然后正常運行該容器。 數據庫啟動后,您可以使用docker exec
這樣運行npm
:
docker exec <container_id> npm run coverage
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.