Вы можете поместить ваш экземпляр / объект в файл 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;
}
По умолчанию Docker подключит ваш новый контейнер к мостовой сети. Это означает, что адреса, такие как: localhost
и 127.0.0.1
относятся только к самому контейнеру. Не хост-машина.
Решить это было легко, это обернуть базу данных 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
.
Однако, лучшей альтернативой здесь является создание определения стека приложения с помощью 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
.