Как насчет:
cat <<EOF
version: "3"
services:
web1:
image: python:2.7-alpine
command: ["python", "-m", "SimpleHTTPServer", "8080"]
web2:
image: python:2.7-alpine
command: ["python", "-m", "SimpleHTTPServer", "8080"]
EOF
Затем получите виртуальные адреса, например:
docker ps | grep compose_ | cut -f1 -d' ' | while read s; do docker inspect $s | egrep "IPAddr.*[0-9]"; done
"IPAddress": "172.28.0.3",
"IPAddress": "172.28.0.2",
Затем подтвердите, что оба адреса отвечают на один и тот же порт:
$ curl -sv 172.28.0.2:8080
...
* Connected to 172.28.0.3 (172.28.0.3) port 8080 (#0)
...
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html>
...
$ curl -s 172.28.0.3:8080
...
[ 117] Вы можете использовать пользовательские сети, чтобы изолировать контейнеры особым образом, но даже с поведением по умолчанию вы можете создать несколько экземпляров этого стека компоновки, и вы всегда будете получать уникальные виртуальные адреса, которые вы можете выборочно получать с вашего клиента. Вы можете поставить обратный прокси-сервер впереди, если хотите направить трафик внешнего клиента на определенный бэкэнд.
Вы можете иметь несколько экземпляров, переопределив имя проекта для каждого экземпляра с помощью $ COMPOSE_PROJECT_NAME или -p. Например:
docker-compose -p mytest1 up -d
docker-compose -p mytest2 up -d
Надеюсь, что помогает.
Почему бы не связать таблицы через ODBC, как предложено Keltia, и затем используют серию запросов для добавления записей, которые отсутствуют и обновить измененные записи. Запросы могут пробежаться VBA. ADO будет также работать хорошо с MySQL и Доступом.
Некоторые примечания по коду использовали в Доступе:
Set db = CurrentDb
strSQL = "Insert INTO [ODBC;DSN=DSNName;].NameOfMySQLTable " _
& "Select AnyField As NameOfMySQLField FROM AnyAccessTable;"
db.Execute strSQL, dbFailOnError
End Sub
Если Вы действительно хотите инкрементные обновления, способ сделать это пишет сценарий, который действительно соединяется с обеими базами данных (через ODBC, по крайней мере, на стороне Доступа) и сравнивает все таблицы. Преимущество копирования всего этого состоит в том, что Вы, несомненно, не забудете что-либо, оборотная сторона может быть размером и тем, что mysql не будет доступен во время перезагрузки.
Чтобы помочь передать только изменения, я предлагаю, чтобы Вы добавили, что новая таблица к Вашей базе данных Access назвала что-то как RecordChanges.
Структура таблицы была бы следующие:
RecordChangeID (int) - Primary Key (Autonumber)
TableName (varchar(250)) - Name of table that changed
RecordID (int) - ID of the record in that table that was added / modified
RecordAction (char(1)) - 'A' if add, 'M' if modified or 'D' if deleted
Отметьте - путем добавления идентификатора пользователя и других деталей к этому, у Вас мог быть хороший журнал аудита.
Это - болезненная часть - но я создал бы подпрограмму в Вашем приложении для добавления записи на эту таблицу каждый раз, когда запись изменяется в таблице, которую Вы хотите синхронизировать со своей базой данных MySQL.
После того как это сделано, я составил бы другую таблицу только с одним рекордным, названным ExportStatus со следующей структурой:
LastRecordChangeID (int) - ID of the last Record Change
you exported in the Record Changes table
Затем создайте подпрограмму для прохождения через всех Рекордных Изменений начиная с последнего экспорта (Вы получаете это от своей таблицы ExportStatus), и генерируйте SQL-операторы для обновления базы данных MySQL, будучи убеждающимися обновить таблицу ExportStatus при выполнении. Вы могли удалить все записи RecordChange, которые успешно экспортировались или оставляют их внутри как журнал аудита.
Прежде, чем реализовать это, необходимо было бы сделать, начальная буква синхронизирует способ, которым Вы в настоящее время делаете ее.
Я сделал бы следующее:
Выведите все свои данные Доступа во временную таблицу в MySQL, который будет Вашим "основным" источником данных на мгновение. Необходимо смочь сделать, это путем установки источника данных ODBC указало на MySQL, щелчка правой кнопкой по таблице Access и удара "Экспорта".
Возможно сделать все это из Доступа MS через связанные таблицы. Но производительность не будет так же хороша, и она потребует изменения Операторов доступа, когда/если Ваши таблицы MySql изменятся.