Docker 容器在本地工作,但在上传到 elasticbeanstalk 时不工作

Docker container works locally but not when uploaded to elasticbeanstalk

我的 docker 容器在本地工作,我正在尝试使用 travis 将它部署在弹性 beanstalk 上。 我的 travis 构建成功。 docker 容器已经在本地进行了测试并且可以正常工作。在 AWS Elastic Beanstalk 上,我的构建目录出现“不是 file/Directory 错误”。

Dockerfile

FROM node:alpine as builder

WORKDIR '/app'

COPY package.json .
RUN npm install

COPY . .

CMD ["npm", "run", "build"]

#Run Phase
FROM nginx 
EXPOSE 80
COPY --from=builder /app/build /usr/share/nginx/html

Dockerfile.dev

FROM node:alpine

WORKDIR '/app'

COPY package.json .
RUN npm install 

COPY . .

CMD ["npm", "run", "start"]

travis.yml

sudo: required
services:
    - docker

before_install:
    - docker build -t *******/docker -f Dockerfile.dev .
script:
    - docker run -e CI=true *******/docker npm run test -- --coverage

deploy:
    provider: elasticbeanstalk
    region: "ap-south-1"
    app: "docker"
    env: "Docker-env-2"
    bucket_name: "***********************"
    bucket_path: "docker"
    on:
        branch: master
    access_key_id: $AWS_ACCESS_KEY
    secret_access_key: $AWS_SECRET_KEY

以下是日志-

Travis output

Elastic Beanstalk output

任何帮助将不胜感激,谢谢!

为了运行它在本地,我运行下面的命令-

1) docker build -t *******/docker .
2) docker run -it <port>:80 <container_id>

它按预期工作,我可以访问 localhost: 上的服务器。 我也在 travis.yml 文件中添加了相同的命令。

有两个 docker 文件,因为我只需要生产容器中的“构建”目录,我可以忽略其余目录来保存 space。

我意识到构建目录列在 .gitignore 文件中,因此阻止 travis-ci 访问它,因为它不在 repo 中。 一旦我删除它并re-deployed它,工作完美。