我知道这个问题已经被问过多次了,但是我找不到任何解决方案。我正在使用Node.js创建一个应用程序,并试图将postgres
用作与其一起使用的数据库。我正在使用docker-compose
来启动Web服务器和postgres服务器容器。这是我的docker-compose.yml
文件的样子-
version: '3'
services:
web:
build: .
ports:
- 3000:3000
postgres:
image: 'postgres:12'
environment:
- POSTGRES_USER=my_admin
- POSTGRES_PASSWORD=password
- POSTGRES_DB=my_db
ports:
- 5432:5432
volumes:
- my_db:/var/lib/postgresql/data
volumes:
my_db:
这是我的dockerfile的样子-
FROM node:12.16.2
ENV NODE_ENV production
# Add Tini
ENV TINI_VERSION v0.18.0
RUN wget https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "-e", "143", "--"]
# Setup code
WORKDIR /app
COPY package.json yarn.lock /app/
RUN yarn install --frozen-lockfile
COPY . /app
# Run on port 3000
EXPOSE 3000
CMD ["yarn", "start"]
USER node
当我运行docker-compose up
时,两个容器都启动,并且我可以看到输出。但是,当我尝试运行curl -i http://localhost:3000
时,它显示了一个错误,但是如果我将ssh放到容器中就可以使用。
我在这里想念东西吗?
更新:
运行docker ps
会显示此内容-
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b2a43079005 postgres:12 "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 0.0.0.0:5432->5432/tcp todo_postgres_1
0b0f1afd4fa1 todo_web "/tini -e 143 -- yar…" 7 minutes ago Up 7 minutes 0.0.0.0:3000->3000/tcp todo_web_1
更新2:
这就是我的方式。 app.ts
文件看起来像(我正在使用hapijs
)-
从'@ hapi / hapi'导入Hapi;
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost',
});
server.route({
method: 'GET',
path: '/',
handler: (request, reply) => {
return reply.response('Hello');
},
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();