docker-compose tidak ada layanan seperti itu: myapp

Saya telah menjalankan gambar dengan: 'docker-compose up'

Dengan 'docker ps' saya mendapatkan:

CREATED             STATUS              PORTS                    NAMES55e1fd18acf1        simpleappnodedocker_web   "node app.js"            6 seconds ago       Up 6 seconds        0.0.0.0:9000->3000/tcp   myapp9879ff20e241        postgres:9.6              "docker-entrypoint..."   36 hours ago        Up 36 hours         0.0.0.0:5432->5432/tcp   nd-db

Saya mencoba menjalankan bash untuk masuk ke shell, tetapi saya mendapatkan kesalahan, Bagaimana mengatasi ini, saya pikir saya melakukan sesuatu yang salah.

$docker-compose run myapp /bin/bash   ERROR: No such service: myapp

docker-menulis.yml:

version: '2'services:  web:    container_name: myapp    build: .    command: node app.js    ports:      - "9000:3000"

Saya pikir Anda punya hubungan docker dan docker-compose salah:

docker-compose adalah pembungkus sekitar docker. Untuk melakukan tugasnya docker-compose membutuhkan konfigurasinya: docker-compose.yaml

Memutar contoh Anda lebih jauh:

membuat docker-menulis.yaml:

version: '2'services:  web:    container_name: myapp    build: .    command: node app.js    ports:      - "9000:3000"

gunakan docker-compose untuk memulai wadah dan menjalankan perintah dalam wadah berjalan:

docker-compose updocker-compose exec web /bin/bash

docker-compose menggunakan nama layanan - dalam kasus Anda ini adalah web - sedangkan docker menggunakan nama wadah - dalam hal ini myapp.

Jadi untuk menjalankan /bin/bash melalui docker, Anda akan menggunakan yang berikut ini:

docker exec -ti myapp /bin/bash

Anda bisa menghapus container_name dari docker-compose.yaml, maka wadah akan dinamai secara otomatis oleh docker-compose - mirip dengan layanan, tetapi diawali dengan nama docker-compose stack (foldername dimana docker-compose.yaml berada).

Jawaban lainnya benar tetapi entah bagaimana agak membingungkan dalam penjelasannya yang luas tentang"hubungan docker dan docker-compose & quot;.

Hal utama untuk menyingkirkan kesalahan yang dimaksud adalah untuk melakukan apa kesalahan mengatakan: & quot;Salah: tidak ada layanan seperti: & quot;, oleh karena itu, Anda harus pilih layanan yang ada di file compose Anda, dan tidak nama kontainer. Dalam contoh, itu adalah web, dan tidak myapp.

Dalam kasus Anda, Jangan lari

docker-compose run --rm myapp bash

tapi lari

docker-compose run --rm web bash

Pastikan juga Anda menjalankan perintah di folder yang sama dengan docker-compose Anda.yml, jika tidak, Anda akan mendapatkan pesan kesalahan yang sama tetapi jawaban Phillip di atas tidak akan berfungsi.

Anda sangat pasti melakukan sesuatu yang salah. Untuk membantu Anda, saya perlu tahu apa yang anda lakukan dan bagaimana Anda melakukannya. Silakan posting docker-compose Anda.yaml dan ingat lengkap semua langkah Anda.

ini bekerja dengan: docker exec-it myapp / bin / bash

@ Phillip-ZyanKLee-Stockmann Anda memiliki konfigurasi yml, tetapi benar-benar perlu menggunakan docker-compose run, jika saya bisa melakukannya dengan docker run?

tidak, Anda tidak. tetapi ini adalah alat yang hebat untuk memiliki konfigurasi di repo git misalnya

jadi, di mana erro?

Ahh, sekarang saya mengerti, saya pikir. Saya akan posting jawaban.