Push-изображение, созданное с помощью docker-compose, в dockerhub - PullRequest
0 голосов
/ 18 июня 2019

У меня есть скрипт golang, который взаимодействует с postgres. Создал сервис в docker-compose.yml для golang и postgre. Когда я запускаю его локально с «docker-compose up», он работает отлично, но теперь я хочу создать одно единственное изображение, чтобы отправить его на мой dockerhub, чтобы его можно было вытащить и запустить с помощью «docker run». Как правильно это сделать?

Образ, созданный «docker-compose up --build», запускается без ошибок с «docker run», но сразу останавливается.

докер-compose.yml:

version: '3.6' 
services: 
  go: 
    container_name: backend 
    build: ./ 
    volumes: 
      - # some paths 
    command: go run ./src/main.go
    working_dir: $GOPATH/src/workflow/project 
    environment: #some env variables 
      ports: 
      - "80:80" 
  db: 
    image: postgres 
    environment: #some env variables 
    volumes: 
      - # some paths 
    ports: 
      - "5432:5432" 

Dockerfile:

FROM golang:latest

WORKDIR $GOPATH/src/workflow/project 

CMD ["/bin/bash"]

Я новичок в докере, поэтому любые комментарии о том, как делать что-то идиоматически, приветствуются

1 Ответ

0 голосов
/ 18 июня 2019

docker-compose не объединяет образы докеров в один, он запускает (с up) или строит, а затем запускает (с up --build) контейнеры докеров на основе изображений, определенных в файле yml.
Подробнееинформация находится в официальных документах

Compose - инструмент для определения и запуска многоконтейнерных Docker-приложений.

, поэтому в вашем примереdocker-compose запустит два контейнера:
1 - на основе go конфигурации
2 - на основе db конфигурации

, чтобы увидеть, какие контейнеры действительно выполняются, используйте команду:

docker ps -a

для получения дополнительной информации см. документы докера

Всегда рекомендуется запускать каждый поиск в отдельном контейнере, но если вы настаиваете на создании изображения, которое имеети golang и postrges, вы можете взять базовый образ postgres и установить на него golang, или наоборот, взять образ на основе golang и установить на него postgres.

Этапы установки могут быть выполнены внутри Dockerfile, пожалуйста, обратитесь к:
- postgres официальный Dockerfile
- golang официальный Dockerfile

объединить их, чтобы получить оба.

Редактировать: (развертывание цифрового океана)

Хорошо, если вы скопируете каждую вещь (образы докеров и файл yml) в свойdroplet, он должен запустить и запустить приложение подобно тому, что происходит, когда вы делаете то же самое на локальном компьютере.

Пример можно найти здесь: Как развернуть веб-приложение Go с помощью Docker иNginx в Ubuntu 18.04

В производстве, обычно для крупномасштабных приложений / приложений для трафика, используются более продвинутые решения, такие как:
- docker swarm
- kubernetes

Для получения дополнительной информации о Kubernetes о цифровом океане, пожалуйста, обратитесь к официальным документам

надеюсь, что это поможет вам найти свой путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...