Это просто вкратце так же просто, как: если у вас есть несколько изображений, вам нужно набрать sh несколько раз;)
Теперь полезный ответ, у вас есть 2 изображения: postgress
и ваш current working directory
. Postgress уже является изображением, которое вы загружаете из docker hub, так что нет необходимости в pu sh it.
Что касается двух других ваших приложений, они в настоящее время находятся в одном файле docker, поэтому только один файл pu sh необходимо.
В вашем файле композиции они оба используют build: .
, поэтому они совместно используют изображение docker. Допустим, вы нажали: docker push max-kirsch/my-cool-app:1.0.0
, вы изменили бы файл компоновки docker, чтобы он выглядел следующим образом:
version: '3'
services:
db:
image: postgres
volumes:
- postgres:/var/lib/postgresql/data
env_file:
- .env
ports:
- "5432"
web:
image: max-kirsch/my-cool-app:1.0.0
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/webmenue
- bundler_gems:/bundle
- ./docker/database.yml:/webmenue/config/database.yml
- cache:/cache
ports:
- "3000:3000"
env_file:
- .env
environment:
- RAILS_ENV=development
- WEBPACKER_DEV_SERVER_HOST=webpacker
- SPROCKETS_CACHE=/cache
depends_on:
- db
webpacker:
image: max-kirsch/my-cool-app:1.0.0
command: ./bin/webpack-dev-server
volumes:
- .:/webmenue
ports:
- '3035:3035'
environment:
- NODE_ENV=development
- RAILS_ENV=development
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
volumes:
postgres:
bundler_gems:
cache:
Я думаю, что вы запутались, потому что у вас есть 2 приложения в вашем файле компоновки, которые разделяют тот же файл docker. И может быть, это заблуждение является правильным. По моему личному мнению, вы должны создать их оба в файле docker, в котором установлены только те компоненты, которые вам нужны. Трудно быть уверенным, не увидев файл docker, но, например, он не выглядит так, как будто ваш веб-упаковщик нуждается в ruby, установленном и может начинаться с простого образа узла в качестве базы вместо установки узла в вашем ruby изображение.