Я пытаюсь найти способ докернизировать среду разработки. Мне удалось докеризировать все по отдельности, но теперь я пытаюсь автоматизировать все в одну команду, чтобы настроить и запустить среду разработки.
Текущий стек
- Угловой 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-файла и изменения будут развернуты немедленно.
Возможно ли это?