docker-compose type không hợp lệ, nó phải là một chuỗi


19

Tôi có biến môi trường sau được cấu hình trong tệp docker-compose.yml:

version: '3'
services:
  server:
    ports:
     - 13045:3000
    environment:
     - NODE_CONFIG: '{"DATABASE_URL":"http://db:5984"}'

Khi cố chạy docker-compose up, tôi gặp lỗi này:

services.server.environment contains {"NODE_CONFIG": "{\"DATABASE_URL\":\"http://db:5984\"}"}, which is an invalid type, it should be a string

Tôi cần biến môi trường được đặt thành chuỗi JSON (xem https://github.com/lorenwest/node-config/wiki/En Môi-Variables # node_config )

Tôi đang làm gì đó sai ở đây? Tôi có thể làm điều này để làm việc bằng cách nào đó?


Tôi nghĩ rằng vấn đề xuất phát từ dấu hai chấm ở giữa, theo nhận xét này về vấn đề github bằng cách sử dụng một lệnh thay vì danh sách sẽ hoạt động (loại bỏ hàng đầu -trước NODE_CONFIG
— Tensibai

Câu trả lời:


9

Các tập tin tài liệu tham khảo Docker Soạn khẳng định , rằng các biến môi trường được định nghĩa là VARIABLE=valuecác phần tử mảng. Đối với trường hợp của bạn, tệp docker-compose.yml sẽ cần được thay đổi thành:

version: '3'
services:
  server:
    ports:
     - 13045:3000
    environment:
     - NODE_CONFIG='{"DATABASE_URL":"http://db:5984"}'

Không. Tôi đã thử nó trước, nó không hoạt động.
— Tri Nguyễn

@TriNguyen Lạ, cái này hiệu quả với tôi
— Hexaholic

Vâng, quá trình xây dựng sẽ đi qua, nhưng quá trình nút không chọn nó.
— Tri Nguyễn

2

Các phần tử args cần phải là một chuỗi

  args:
    - 'MAVEN_USER=$MAVEN_USER'
    - 'MAVEN_PASSWORD=$MAVEN_PASSWORD'

vâng, điều này làm việc cho tôi ngày hôm nay.
— Adam Mendoza

2

Bạn cần loại bỏ dấu gạch ngang trước biến. Sử dụng cú pháp như thế:

   environment:
     NODE_CONFIG: '{"DATABASE_URL":"http://db:5984"}'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.