Docker Wordpress соединение с сервером базы данных на локальном хосте

Вы можете поместить ваш экземпляр / объект в файл IJobDetail.

 JobDataMap m = new JobDataMap();
  m.Put("Class1", new Class1(){name="xxx"});


  IJobDetail job = JobBuilder.Create<Job>()
            .WithIdentity("myJob", "group1")
            .UsingJobData(m)//class object
            .UsingJobData("name2", "Hello World!")
            .Build();

использование

  public void Execute(IJobExecutionContext context)
        {
 JobDataMap dataMap = context.JobDetail.JobDataMap;
            Class1 class1 = (Class1)dataMap.Get("Class1");
string x = class1.name;
}
1
задан int 18 March 2019 в 14:23
поделиться

1 ответ

По умолчанию Docker подключит ваш новый контейнер к мостовой сети. Это означает, что адреса, такие как: localhost и 127.0.0.1 относятся только к самому контейнеру. Не хост-машина.

Решить это было легко, это обернуть базу данных MySQL в собственный контейнер. Таким образом, ваши контейнеры могут обращаться друг к другу без проблем.

Подключение к базе данных MySQL на хосте

Если вы действительно хотите соединить службу в контейнере со службой на хосте, вам необходимо подключить контейнер к соответствующей сети.

Сначала вам нужно будет создать сеть. Предполагая, что ваш локальный компьютер имеет фиксированный IP-адрес 192.168.0.1, вы сможете сделать это с помощью:

docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 dockernet

Затем вы можете:

docker run --name  test-wordpress --net=dockernet -p 8081:80 -d wordpress

И тогда вы должны быть может ссылаться на хост изнутри контейнера по IP: 192.168.0.1.

Создание стека с помощью Wordpress и MySQL.

Однако, лучшей альтернативой здесь является создание определения стека приложения с помощью docker-compose, которое включает в себя базу данных и приложение WordPress.

Вы можете создать файл docker-compose.yml следующим образом:

docker-compose.yml

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

И запустить стек следующим образом:

[ 113]

Затем посетите: http: // localhost: 8000

Обратите внимание, что данные базы данных будут храниться на томе, управляемом докером, который называется db_data.

Подробную информацию об установке docker-compose можно найти здесь: https://docs.docker.com/compose/install/

. Запустите оба контейнера, просто docker run [1119 ]

То же самое может быть достигнуто только с помощью docker run, например так:

docker volume create db_data

docker network create mysqlnet

docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=somewordpress -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress -v db_data:/var/lib/mysql --net=mysqlnet -d mysql:5.7

docker run --name test-wordpress -e WORDPRESS_DB_HOST=test-mysql:3306 -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress --net=mysqlnet -p 8081:80 -d wordpress:latest

Вместо этого вы можете изменить отображение файлов данных mysql на локальный каталог и просто пропустить оператор docker volume create .

0
ответ дан Andreas Lorenzen 18 March 2019 в 14:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: