Docker
- 5 ответов
- 0 вопросов
5
Вклад в тег
/project-group (organization):
/api - сюда можно вынести api вашего проекта.
/desktop - здесь ваш web-проект для desktop на php, например.
/mobile - здесь ваш web-проект для мобильной версии сайта, на той-же node.js.
/admin - здесь ваша админка.
/infrastructure - ну, или назовите проще, "server". Здесь ваши Dockerfile, docker-compose, ci/cd скрипты и т.п.
/infrastructure
/api
service.yml
build.yml
deploy.yml
/mobile
service.yml
build.yml
deploy.yml
/desktop
service.yml
build.yml
deploy.yml
/admin
service.yml
build.yml
deploy.yml
/mysql
mysql.cnf
service.yml
/redis
redis.conf
service.yml
/php-fpm
Dockerfile
www-conf
php.ini
service.yml
/nginx
nginx.conf
/prod
site.conf
/test
site.conf
/dev
site.conf
/cron
Dockerfile
crontab
service.yml
mobile-dev.sh
desktop-dev.sh
prod.sh
test.sh
docker-compose -f mobile/service.yml pull;
docker-compose -f mobile/service.yml down;
docker-compose -f mobile/service.yml up --detach;
version: "3.7"
services:
mobile:
image: keymetrics/pm2:10-alpine
environment:
APP_ENV: ${APP_ENV}
APP_LANG: ${APP_LANG}
API_URL: ${API_URL}
BASIC_TOKEN: ${BASIC_TOKEN}
working_dir: /app
command: pm2-runtime start config.js --env $APP_ENV
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- ${APP_DIR}:/app
restart: always
container_name: mobile
Возможно ли это всё запихнуть в контейнер и связать вместе?
есть проект состоящий из Front (JS+React) + Back (бинарник на Go + config files) + DB (PostgreSQL)
Нужно ли в этот Docker файл интегрировать саму среду PostgreSQL или можно только базу данных?
Бинарник бэка запускается на определённом порту, будет ли доступ к этому бинарнику по порту из-вне?
Спрашиваю потому, что если запущу несколько подобных контейнеров не будут ли они конфликтовать за порты?
Или каждый образ надо кофигурировать под отдельный порт?
# Тут берем официальный образ Golang для компиляции бинарника
# В нем есть все для сборки, за редким исключением
FROM golang:stretch as builder
# Устанавливаем рабочую директорию внутри образа сборки бинарника
WORKDIR /app
# Копируем содержимое директории с вашим проектом в образ для сборки
COPY . .
# Скачиваем зависимости
RUN go get -d -v
# Собираем бинарник в директорию /app/bin
RUN GOOS=linux GOARCH=amd64 go build -i -o bin/backend main.go
# А теперь берем минимальный образ для запуска бинарника
FROM scratch
# Из образа для сборки, копируем готовый бинарник backend-а
COPY --from=builder /app/bin/backend /app/bin/backend
# Назначаем полученный бинарник точкой входа в контейнер
ENTRYPOINT ["/app/bin/backend"]
docker build -t backend:latest .
version: "3.7"
volumes:
database:
services:
# Postgres. Берем готовый официальный образ
database:
image: postgres:12-alpine
# Вот собственно тут и указывается, какие порты будут видны на вашей локали
ports:
- 5432:5432
# Там выше в volumes указывали набор volumes. Используем вольюм database, чтобы хранить БД
volumes:
- database:/var/lib/postgresql/data
restart: always
# Backend. Берем образ, что собрали выше
backend:
image: backend:latest
# В Dockerfile мы для гибкости не указывали порт backend-a. Укажем его тут.
expose:
- 8080
ports:
- 8080:8080
restart: always
# Frontend
frontend:
image: frontend:latest
expose:
- 80
ports:
- 80:80
restart: always
sudo nano /etc/default/grub
GRUB_CMD_LINE_LINUX="elevator=noop transparent_hugepage=never"
sudo update-grub