Tôi mới sử dụng Docker và tôi đang gặp khó khăn trong việc thiết lập vùng chứa docker như tôi muốn. Tôi có một ứng dụng nodejs có thể mất hai tham số khi bắt đầu. Ví dụ, tôi có thể sử dụngSử dụng lệnh docker run để chuyển đối số cho CMD trong Dockerfile
node server.js 0 dev
hoặc
node server.js 1 prod
để chuyển đổi giữa chế độ sản xuất và chế độ dev và xác định xem nó nên bật cụm trên. Bây giờ tôi muốn tạo hình ảnh Docker với lập luận để làm điều tương tự, điều duy nhất tôi có thể làm cho đến nay là để điều chỉnh Dockerfile để có một dòng
CMD [ "node", "server.js", "0", "dev"]
và
docker build -t me/app .
để xây dựng docker.
Sau đó, docker run -p 9000:9000 -d me/app
để chạy trình neo.
Nhưng nếu tôi muốn chuyển sang chế độ sản, tôi cần phải thay đổi Dockerfile CMD được
CMD [ "node", "server.js", "1", "prod"]
,
và tôi cần phải giết một tuổi lắng nghe trên cổng 9000 và xây dựng lại hình ảnh. Tôi ước gì tôi có thể có một cái gì đó giống như
docker run -p 9000:9000 environment=dev cluster=0 -d me/app
để tạo ra một hình ảnh và chạy nodejs lệnh với "môi trường" và "cụm" lập luận, vì vậy tôi không cần phải thay đổi Dockerfile và xây dựng lại các Docker nữa không. Làm thế nào tôi có thể thực hiện điều này?
Làm cách nào tôi có thể sử dụng ENV trong tệp docker CMD, bạn có thể cho tôi ví dụ không? – Jaaaaaaay
@Jaaaaaaay 'ENV' là khai báo trong' Dockerfile' của bạn (đọc https://docs.docker.com/engine/reference/builder/#/env), sau đó nó sẽ được định giá bởi 'docker run -e myvar = myvalue' – VonC
@Jaaaaaaay Tôi đã chỉnh sửa câu trả lời để giải quyết câu hỏi của bạn. – VonC