Совместное использование исполняемых файлов в двух док-контейнерах с помощью docker-compose - PullRequest
0 голосов
/ 01 сентября 2018

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

Текущий стек

  • Угловой 5
  • Голанг + Лямбда REST Api
  • Монго БД

Текущий процесс для запуска dev

Без использования docker для запуска этой среды я должен сделать следующее

1) В папке проекта Angular запустите ng serve

2) В проекте Golang мне нужно собрать исходный код и создать zip-файлы из исполняемых файлов

3) Используя aws-sam-cli, я запускаю команду "sam local start-api" для эмуляции AWS API Gateway.

4) Mongo db инициируется командой mongod.

Попытка Dockerize

  • Создание приложения Angular на докере, предоставляя общий доступ только к исходному коду через том и настройку портов для прямой перезагрузки. Я могу получить доступ к своему веб-сайту на localhost: 4200
  • Создание golang в Docker, отправка исходного кода и запуск сценария для создания необходимых zip-файлов для aws-sam-cli

Вопрос

Сначала я попытался установить aws-sam-cli в том же контейнере golang, но наличие следующего не дает мне правильно установить «sam» (предложения?)

RUN apk add --no-cache bash gawk sed grep bc coreutils git RUN apk add --no-cache curl && \ curl -sSLO https://github.com/awslabs/aws-sam-cli/archive/v0.6.0.tar.gz && \ tar -C / usr / local / bin -zxvf v0.6.0.tar.gz && \ apk del curl && \ rm -f v0.6.0.tar.gz

RUN apk add --no-cache py-pip && pip install awscli

ЭКСПОЗИЦИЯ 3000

CMD ["sam", "local", "start-api"]

Может, мне просто нужно что-то добавить в ПУТЬ?

Затем я понял, что могу просто создать новый контейнер прямо из образа aws-cli из docker, так что я могу создать образ, но теперь я не хочу сейчас делать, как связать мой контейнер golang с моим шаблоном .yaml (необходим для работы aws cli) и двоичные файлы (zip-файлы) для контейнера aws-cli, чтобы я мог запустить sam local start-api и запустить свой сервер на порту 3000?

Это папки на моей локальной машине

- server
 - api
 - template.yaml
 - Dockerfile

Затем при выполнении файла Docker контейнер запустит скрипт и ВНУТРИ контейнера, который у меня теперь есть

- server
 - api
 - template.yaml
 - Dockerfile
 - bin

(Примечание: при запуске контейнера папка "bin" не существует на моем локальном компьютере, хотя я думаю я поделился томом)

Это мой файл docker-compose.yaml

    version: '3.3'
    services:
      server:
        container_name: 'server'
        build: './server'
        volumes:
          - 'executables:/go/src/app/server/bin'
      amazon:
        image: cnadiminti/aws-sam-local
        command: local start-api --host 0.0.0.0 --docker-volume-basedir 
    executables
        ports:
          - '3000:3000'
        volumes:
          - 'executables:/go/src/app/server/bin'
        depends_on:
          - server

    volumes:
      executables:

Таким образом, команда start-api позволяет мне изменять двоичные файлы, и она автоматически захватывает изменения, поэтому я создал скрипт на контейнере сервера для создания zip-файлов из измененного кода. Я хочу, чтобы контейнер amazon мог идентифицировать обновленный zip-файл из контейнера сервера, чтобы он мог получать изменения без необходимости перезапуска команды sam local start-api для контейнера amazon

По сути, конечная цель этого состоит в том, чтобы сделать git-клон проекта, запустить docker-compose и начать вносить изменения в код (с помощью редактора на локальном компьютере), а затем просто запустить скрипт через docker exec для восстановления zip-файла и изменения будут развернуты немедленно.

Возможно ли это?

...