簡體   English   中英

使用Postgres數據庫進行應用程序測試的Docker容器

[英]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
  1. 從圖像文檔中,當我使用以下命令運行容器時:

    $ docker運行build-name -d postgres

我看到容器需要時間來啟動postgresql服務。

  1. 當我運行不帶“ -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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM