Для разработки вы можете использовать docker -compose .
Ключевые преимущества:
- Настройка служб вашего приложения в YAML.
- Отдельная команда для создания / запуска служб, определенных в этой конфигурации.
- Compose создает сеть по умолчанию для вашего приложения. Каждый контейнер присоединяется к этой сети по умолчанию, и они могут видеть друг друга.
Я использую следующую структуру для проекта.
projectFolder
|_backend (laravel app)
|_frontend (react app)
|_docker-compose.yml
|_backend.dockerfile
|_frontend.dockerfile
My docker -compose.yml
version: "3.3"
services:
frontend:
build:
context: ./
dockerfile: frontend.dockerfile
args:
- NODE_ENV=development
ports:
- "3000:3000"
volumes:
- ./frontend:/opt/app
- ./frontend/package.json:/opt/package.json
environment:
- NODE_ENV=development
backend:
build:
context: ./
dockerfile: backend.dockerfile
working_dir: /var/www/html/actas
volumes:
- ./backend:/var/www/html/actas
environment:
- "DB_PORT=3306"
- "DB_HOST=mysql"
ports:
- "8000:8000"
mysql:
image: mysql:5.6
ports:
- "3306:3306"
volumes:
- dbdata:/var/lib/mysql
environment:
- "MYSQL_DATABASE=homestead"
- "MYSQL_USER=homestead"
- "MYSQL_PASSWORD=secret"
- "MYSQL_ROOT_PASSWORD=secret"
volumes:
dbdata:
Каждая часть приложения определяется службой в файле docker -compose. Например,
- веб-интерфейс
- бэкэнд
- mysql
Docker -compose создаст сеть по умолчанию и добавит каждый контейнер к этому. Именем хоста для каждого контейнера будет имя службы, определенное в файле yml.
Например, внутренний контейнер обращается к серверу mysql с именем mysql. Это можно увидеть в самом определении сервиса:
backend:
...
environment:
- "DB_PORT=3306"
- "DB_HOST=mysql" <-- The hostname for the mysql container is the name of the service
С помощью этого в приложении реакции я могу настроить конфигурацию прокси в пакете. json следующим образом
"proxy": "http://backend:8000",
И последнее, о чем упоминал Дэвид Мэйз в комментариях. Добавьте backend в файл hosts, чтобы браузер мог разрешить это имя.
Например, / etc / hosts в ubuntu
127.0.1.1 backend