问题描述
我的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
以下是日志-
任何帮助将不胜感激,谢谢!
要在本地运行,请运行以下命令-
1) docker build -t *******/docker .
2) docker run -it <port>:80 <container_id>
它按预期工作,我可以访问localhost:上的服务器。 我也把同样的命令放在travis.yml文件上。
有两个dockerfile,因为我只需要生产容器中的“ build”目录,而我可以忽略其余目录以节省空间。
解决方法
我意识到在.gitignore文件中列出了构建目录,从而防止travis-ci访问该目录,因为它不在存储库中。 一旦我将其删除并重新部署,就可以完美工作。