Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 带有postgres数据库的应用程序测试的Docker容器_Postgresql_Docker_Testing - Fatal编程技术网

Postgresql 带有postgres数据库的应用程序测试的Docker容器

Postgresql 带有postgres数据库的应用程序测试的Docker容器,postgresql,docker,testing,Postgresql,Docker,Testing,我是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

我是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运行构建名称-d postgres

我发现容器启动postgresql服务需要时间

当我在没有-d postgres参数的情况下运行容器时:

$docker运行生成名称

由于无法连接到服务器,服务未启动,测试失败

问题:

A.postgresql服务启动后,如何运行测试

B.我看到一些使用docker composer的示例,但我可以在没有composer的情况下使用吗


谢谢

如果目标只是在Postgres容器中运行测试,一个解决方案可能是在Postgres:alpine派生映像中安装NodeJ并正常运行容器。数据库启动后,可以使用docker exec运行npm,如下所示:

docker exec <container_id> npm run coverage

如果目标只是在Postgres容器中运行测试,那么一个解决方案就是在Postgres:alpine派生映像中安装NodeJs并正常运行容器。数据库启动后,可以使用docker exec运行npm,如下所示:

docker exec <container_id> npm run coverage

感谢@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
运行容器:

$ docker build -t test .
$ docker run --name startedtest -d test -d postgres
在conatiner运行后运行测试:

$ docker exec startedtest some_create_schema_script && npm run coverage

感谢@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
运行容器:

$ docker build -t test .
$ docker run --name startedtest -d test -d postgres
在conatiner运行后运行测试:

$ docker exec startedtest some_create_schema_script && npm run coverage