По умолчанию 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
.
SQL Server только хранит время к приблизительно 1/300-му из секунды. Они всегда падают на 0, 3 и 7 миллисекунд. Например, подсчет от 0 в самом маленьком инкременте:
0:00:00.000
0:00:00.003
0:00:00.007
0:00:00.010
0:00:00.013
...
При необходимости в той точности миллисекунды нет никакого приятного пути вокруг этого. Наилучшие варианты, которые я видел, состоят в том, чтобы сохранить значение в пользовательских числовых полях и восстановить его каждый раз, когда Вы выбираете значение, или сохранить его как строку известного формата. Можно затем (дополнительно) сохранить 'приблизительную' дату в собственном типе даты ради скорости, но это представляет концептуальную сложность, которая часто не требуется.
SQL Server 2008 имеет намного больше доступной точности. Тип datetime2 точно сохранит значения как это: 19.12.2008 9:31:38.5670514 (точность к 100 наносекундам).
Ссылка: время и datetime2 - Исследующий Новые Типы данных Даты/Времени 2008 SQL Server
SQL Server datetime
тип только имеет 1/300-ю из секунды (~3.33 ̅ мс) разрешение, таким образом, Вы, вероятно, видите погрешность округления.
Посмотрите ссылку SQL Server Даты и времени MSDN
SQL Server только с точностью до 1/300-й из секунды. Это будет круглые значения к ближайшему 1/300-му.
ДАТА И ВРЕМЯ не имеет бесконечной точности - Вы, вероятно, используете значение, которое не может точно быть представлено с доступными битами.
SQL Server хранит значения даты и времени к точности 3 миллисекунд. (Я услышал об этом, но не могу найти официальную ссылку.)