【问题标题】:Creating a Docker Container to deploy to a prod env创建 Docker 容器以部署到产品环境
【发布时间】:2020-01-26 06:16:09
【问题描述】:

我在通过 Jenkins 构建应用程序并在外部 tomcat 上运行容器时遇到了一些问题。

Dockerfile:

FROM node:10.16.3
RUN ls -al
WORKDIR /app
COPY /package/repo/package.json /app/package.json
RUN npm install
COPY /package/repo /app
RUN npm run build

EXPOSE 8080
CMD ["npm", "start]

npm 开始调用node server.js

server.js:

const express = require('express');
const app = express();
const port = 8080;

app.get('/', (req, res) => {
  res.send('Hello World!');
});


app.listen(port, () => {
  console.log(`Example app listening on port ${port}!`);
  console.log(__dirname+'/client/build/index.html');

});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));

docker build -t reacttest . docker run reacttest

我正在尝试使用 localhost:8080 访问容器,但是,每当我访问该端口时,都会收到未找到错误。有没有我错过的步骤。抱歉,我是 docker 新手。

【问题讨论】:

    标签: node.js reactjs docker


    【解决方案1】:

    您需要将一个端口从您的机器映射到容器。为此使用 p 标志。

    docker run reacttest -p 8080:8080
    

    一般的语法是:

    docker run <image> -p <host port>:<container port>
    

    您可以在documentation阅读更多内容

    【讨论】:

    • 非常感谢,我在做 docker run -p ,不知道容器端口
    【解决方案2】:

    EXPOSE 没有实际发布端口。您应该使用-p 标志运行您的容器,以将容器中的端口映射到您的主机系统。请参阅documents

    【讨论】:

      猜你喜欢
      • 2013-10-15
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多