Если вы запустили MySQL, открывая порты, вы сможете подключиться к нему, подключившись с localhost
, с портом 3306
.В противном случае, как вы предложили, есть возможность настроить docker-compose file
.Этот файл обычно содержит всю конфигурацию, необходимую для запуска вашего приложения.Так, например, подходящая конфигурация для вашего приложения (примечание: я предполагаю, что вы используете MySQL 5.7, поскольку вы его не указали) может быть:
version: '3.3'
services: # list of services composing your application
db: # the service hosting your MySQL instance
image: mysql:5.7 # the image and tag docker will pull from docker hub
volumes: # this section allows you to configure persistence within multiple restarts
- db_data:/var/lib/mysql
restart: always # if the db crash somehow, restart it
environment: # env variables, you usually set this to override existing ones
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: todoservice
MYSQL_USER: root
MYSQL_PASSWORD: root
todoservice: # you application service
build: ./ # this tells docker-compose to not pull from docker hub, but to build from the Dockerfile it will find in ./
restart: always
depends_on: # set a dependency between your service and the database: this means that your application will not run if the db service is not running, but it doesn't assure you that the dabase will be ready to accept incoming connection (so your application could crash untill the db initializes itself)
- db
volumes:
db_data: # this tells docker-compose to save your data in a generic docker volume. You can see existing volumes typing 'docker volume ls'
Для запуска и развертывания приложенияТеперь вам нужно набрать в терминале: docker-compose up
Это вызовет ваше развертывание.Обратите внимание, что здесь не отображаются никакие порты: только ваша служба сможет получить доступ к базе данных с номера db:3306
(вам не нужно обращаться по IP, но вы можете обращаться к другим службам, используя имя службы).В целях отладки вы все равно можете открыть свои порты БД, добавив эту строку в image
:
ports:
- "3306:3306"
Обратите внимание, что этот порт должен быть свободным (никакие другие системные службы не используют его), в противном случае все развертываниепотерпит неудачу.
Последнее замечание: поскольку docker-compose будет стараться избегать создания ваших образов каждый раз, когда вы запускаете службу, чтобы заставить ее создавать новую, вы должны добавить --build
к docker-compose up
команда.
Чтобы остановить развертывание, просто используйте docker-compose down
.Чтобы удалить все постоянные данные, связанные с вашим развертыванием (т. Е. Начиная с новой базы данных), добавьте флаг -v
в конце предыдущей команды.
Надеюсь, это поможет!