我正在使用docker compose来创建和运行多个服务。其中一个服务是nodeJS项目,我在其中添加了一个Makefile来运行一些自定义构建任务。
这就是我在docker-compose.yml
文件
web:
container_name: web
image: myApp/web
build:
context: .
dockerfile: operations/.docker/web/${APP_ENV}.dockerfile
ports:
- "8080"
volumes:
- ./src/js/web:/var/www/myApp/
working_dir: /var/www/myApp
env_file:
- operations/env/web/${APP_ENV}.env
networks:
- myApp_network
正如您所看到的,我的本地文件系统有一个带别名的卷。 Makefile位于./src/js/web
目录下。
这是dockerfile
FROM node:latest
WORKDIR /var/www/myApp
RUN npm i
RUN make -f /var/www/myApp/Makefile build
RUN mkdir -p /var/log/pm2
EXPOSE 8080
ENTRYPOINT ["pm2", "start", "dist/server/bin/www.js","--name","web","--log","/var/log/pm2/pm2.log","--watch","--no-daemon"]
我的mac书上有相同的设置,我设法构建并运行服务。
但是,我最近尝试在linux mint上运行docker compose,我收到以下错误。
make: /var/www/myApp/Makefile: No such file or directory
make: *** No rule to make target '/var/www/myApp/Makefile'. Stop.
ERROR: Service 'web' failed to build: The command '/bin/sh -c make -f /var/www/myApp/Makefile build' returned a non-zero code: 2
我还尝试通过删除RUN make -f /var/www/myApp/Makefile build
来尝试构建图像,但它运行正常。当我进入容器时,我可以看到Makefile位于/var/www/myApp
。