Как запустить dockerfile вместе с docker-compose?

Всем привет! Есть такая проблема.. Составил инструкции для docker-compose, где подымаю nginx и всю текущущю директорию запихиваю в контейнер. Но чтобы все хорошо работало, нужно зайти в контейнер и произвести настройку env, так же нужно создать создать миграции (проект на symfony).И собственно сама проблема: как это все автоматизировать? Типа чтобы при команде docker-compose up производились те настройки. Вроде как нужно создать dockerfile? Да? Но как он запуститься одновременно с контейнирами?

Как я делаю. Выполняю команду docker exec -it {id_php} /bin/bash и создаю миграции. Как это автоматизировать?

version: '3'

services:
  mysql:
    container_name: mysql
    hostname: mysql
    image: mysql:8
    restart: always
    environment:
      - MYSQL_DATABASE=test
      - MYSQL_USER=tester
      - MYSQL_PASSWORD=123123
      - MYSQL_ALLOW_EMPTY_PASSWORD="yes"
    ports:
      - "3306:3306"

  php-fpm:
    container_name: php
    image: webdevops/php-dev:7.4
    hostname: php-fpm
    volumes:
      - "./:/app"
    working_dir: "/app"
    depends_on:
      - mysql

  nginx:
    container_name: nginx
    image: webdevops/nginx
    hostname: nginx
    environment:
      WEB_DOCUMENT_ROOT: /app/public
      WEB_DOCUMENT_INDEX: index.php
      WEB_PHP_SOCKET: php-fpm:9000
    ports:
      - "8080:80"
    volumes:
      - "./:/app"
    depends_on:
      - php-fpm

Вот мой docker-compose


Ответы (1 шт):

Автор решения: Neomaster

Но чтобы все хорошо работало, нужно зайти в контейнер и произвести настройку env

Эти действия прописываются в команде RUN, не нужно заходить в файловую систему контейнера через запуск с флагом -it.

Пример 1 (Node.js)

Здесь устанавливается npm при сборке.

FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD [ "node", "app.mjs" ]

Пример 2 (.Net Core)

Здесь еще и указывается переменная среды в ENV.

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim
WORKDIR /App
RUN apt-get update;apt-get install libldap-2.4-2:amd64 -y; ... и еще много чего
COPY . /App
ENV KRB5_KTNAME=/...../win.keytab
ENTRYPOINT ["dotnet", "App.dll"]

Пропишите по аналогии инструкции для

произвести настройку env, так же нужно создать создать миграции

Много инструкций RUN использовать не рекомендуется. Создайте одну большую строку из всех необходимых инструкций, проверьте ее в интерактивном режиме запуска контейнера. Если все работает, то ее можно прописывать в RUN. Если будут скачиваться пакеты, требующие подтверждения установки (нажатия y), добавляйте в конец команды флаг -y.

→ Ссылка