Docker容器在本地工作,但在上传到ElasticBeanstalk时无法工作

问题描述

我的docker容器在本地工作,我正在尝试使用travis将其部署在弹性beantalk上。 我的travis构建成功。 docker容器已在本地测试,并且可以工作。在AWS Elastic Beanstalk上,我的构建目录出现“不是文件/目录错误”。

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","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文件上。

有两个dockerfile,因为我只需要生产容器中的“ build”目录,而我可以忽略其余目录以节省空间。

解决方法

我意识到在.gitignore文件中列出了构建目录,从而防止travis-ci访问该目录,因为它不在存储库中。 一旦我将其删除并重新部署,就可以完美工作。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...