LINUX.ORG.RU

работа с докер

 


0

2

почитал доки, уроки, посмотрел видео но все равно остались вопросы
в основном пишут про базовые вещи, установка, контейнеры,образы, команды
например есть проект на пхп +mysql
проекте лежит в каталоге app, рядом дамп базы, внутри app точка входа www
вопрос -как запустить?
брать образ системы, например убунту, и ставить туда пхп,апач и mysql и настраивать как сервер?
или взять образы mysql+php, но тогда как настроить публичную директорию, затем заджойнится к mysql и импортировать базу?

Ты нифига не понял

брать образ системы, например убунту, и ставить туда пхп,апач и mysql и настраивать как сервер?

Это антипаттерн. Так делать можно только в исключительных случаях, возможно, для девсреды, не для продакшена.

или взять образы mysql+php, но тогда как настроить публичную директорию, затем заджойнится к mysql и импортировать базу?

Создаешь свой образ на основе того же образа пхп. Добавляешь в нужное место свои пхпешные файлы (в тот же www при помощи команды COPY или ADD в докерфайле). Точку входа в приложение в том же докерфайле указываешь при помощи команды CMD или ENTRYPOINT (там естьнюансы, см документацию и описание к базовому образу, на основе которого ты создаешь свой)

anonymous
()

Всё зависит от того, что ты хочешь сделать с этим докером.

брать образ системы, например убунту, и ставить туда пхп,апач и mysql и настраивать как сервер?

Если ты хочешь пхп/апач/mysql на одном сервере в продакшне и хочешь воспроизвести этот же сетап везде — в CI, у других разработчиков и т.д. и тебе не нужно это масштабировать — да.

или взять образы mysql+php

Отдельно? Да, это обычно полезнее на практике. Склеиваешь отдельные контейнеры чем-нибудь вроде https://docs.docker.com/compose/ (тебе же не нужно k8s, надеюсь) и получаешь окружение, которое воспроизводит сетап с mysql/php на разных серверах.

затем заджойнится к mysql и импортировать базу

Импорт базы — за пределами жизненного цикла контейнера. mysql-контейнер получит смонтированную директорию с файлами базы, но как они туда попанут — решаешь сам.

x3al ★★★★★
()
Ответ на: комментарий от kommersant

Тогда делаешь как удобнее тебе, единственная деталь — сама база mysql не должна быть внутри контейнера.

Отдельными контейнерами быстрее, да. Ты можешь тупо поднять контейнер с mysql и замаппить его на свой локальный порт какой-там-обычно-слушает-mysql, практически без движений. Примерно то же самое с апачем, только убедиться, что из апача видно твой mysql.

Буквально берёшь какой-нибудь php:7.2-apache, указываешь ему на сорсы, запускаешь. Всё.

x3al ★★★★★
()
Ответ на: комментарий от anonymous

Поскольку, судя по всему, при первом запуске ты накатываешь в базу дамп из пхпешного приложения, то модифицировать образ базы данных вообще не придется. Там обычно, рутовые пароли и все прочее задается через переменные окружения или докеровские аргументы.

Сначала создаешь контейнер на основе образа с базой данных, настроив на ней пароли к рутовому пользователю, затем запускаешь контейнер на основе свои модифицированный образа пхп, указав ключ –link с образом базы данных (да, депрекейтед, но удобный, на первое время). У тебя в /etc/hosts пропишется айпишник к контейнеру бд, с базой будешь связываться по постоянному имени. Можно накатывать дамп и работать.

Да, рулить даже двумя контейнерами уже геммор. Docker-compose обязателен к изучению

anonymous
()
Ответ на: комментарий от x3al

вообще-то инит скрипты есть, при первом запуске отрабатываются

InterVi ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.