Dockerfile中nats服务器的CMD命令是什么



我目前正在使用NestJS通过以下微服务架构构建一个应用程序。并使用NATS作为消息传递系统。它在我的本地机器上运行良好,但我无法将NATS服务器固定化。

我的项目的文件夹结构:

├─── services/
├─── nats/
|       Dockerfile
├─── client/
|       ...
|       ...
|       .dockerignore
|       Dockerfile
└─── docker-compose.yml

现在,nats/文件夹中的Dockerfile描述如下:

FROM nats:2.1.9
EXPOSE 4222
CMD [ "nats-server" ]

client/文件夹中的Dockerfile描述为:

FROM node:12
WORKDIR /myProject/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 8081
CMD [ "node", "dist/main" ]

docker-compose.yml是:

version: '3'
services:
nats-server:
image: nats:2.1.9
restart: always
build: ./nats
ports:
- 4222:4222
client-service:
build: ./client
volumes:
- ./client:/myProject/src/app
depends_on:
- nats-server
environment:
NODE_ENV: development
ports:
- 8081:3000

我运行了sudo docker compose-build命令,没有发现任何错误,之后运行sudo docker-compose-up命令,发现以下错误:

Recreating services_nats-server_1 ... done
Recreating services_client-service_1 ... done
Attaching to services_nats-server_1, services_client-service_1
nats-server_1     | nats-server: unrecognized command: "nats-server_1"
services_nats-server_1 exited with code 1
nats-server_1     | nats-server: unrecognized command: "nats-server_1"
nats-server_1     | nats-server: unrecognized command: "nats-server_1"
nats-server_1     | nats-server: unrecognized command: "nats-server_1"
client-service_1  | [Nest] 1   - 12/03/2020, 4:44:34 PM   [NestFactory] Starting Nest application...
client-service_1  | [Nest] 1   - 12/03/2020, 4:44:34 PM   [InstanceLoader] AppModule dependencies initialized +41ms
client-service_1  | [Nest] 1   - 12/03/2020, 4:44:34 PM   [InstanceLoader] MongooseModule dependencies initialized +1ms
client-service_1  | [Nest] 1   - 12/03/2020, 4:44:34 PM   [InstanceLoader] ClientsModule dependencies initialized +1ms
client-service_1  | [Nest] 1   - 12/03/2020, 4:44:34 PM   [InstanceLoader] ClientsModule dependencies initialized +0ms
client-service_1  | [Nest] 1   - 12/03/2020, 4:44:34 PM   [InstanceLoader] ConfigHostModule dependencies initialized +1ms
client-service_1  | [Nest] 1   - 12/03/2020, 4:44:34 PM   [InstanceLoader] ConfigModule dependencies initialized +1ms
services_nats-server_1 exited with code 1
nats-server_1     | nats-server: unrecognized command: "nats-server_1"
nats-server_1     | nats-server: unrecognized command: "nats-server_1"
nats-server_1     | nats-server: unrecognized command: "nats-server_1"
nats-server_1     | nats-server: unrecognized command: "nats-server_1"
nats-server_1     | nats-server: unrecognized command: "nats-server_1"

客户端服务Dockerfile没有问题,因为它取决于尝试首先运行它的nats服务器。有人能帮我解决这个问题吗?

我要感谢你的时间和考虑。

nats-server服务的build:命令已覆盖Docker Hub映像。我只需要拉动图像并暴露端口。

因此,我的docker-compose.yml文件如下:

version: '3'
services:
nats-server:
image: nats:2.1.9
restart: always
ports:
- 4222:4222
client-service:
build: ./client
volumes:
- ./client:/myProject/src/app
depends_on:
- nats-server
environment:
NODE_ENV: development
ports:
- 8081:3000

检查Dockerfile,您会注意到ENTRYPOINT设置为/nats-serverCMDENTRYPOINT的参数(在这种情况下为--config nats-server.conf(。除非扩展nats映像,否则不需要基于它构建新映像(从compose文件中删除build: ./nats(。可以通过在docker-compose.yml上设置command:来覆盖默认的CMD

最新更新