docker-compose up没有映射端口

时间:2020-06-21 13:15:13

标签: node.js postgresql docker docker-compose

我知道这个问题已经被问过多次了,但是我找不到任何解决方案。我正在使用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();

0 个答案:

没有答案