官术网_书友最值得收藏!

Running databases in containers

Now I have an image that can work for new deployments and upgrades. The image can be used by developers who might run it without mounting a volume while they're working on a feature, so they can start with a fresh database every time they run a container. And the same image can be used in environments where the existing database needs to be preserved by running the container with a volume that contains the database files.

This is how you run the NerdDinner database in Docker, using the default administrator password, using a host directory for the database files, and naming the container so I can access it from other containers:

mkdir -p C:\databases\nd

docker container run -d -p 1433:1433 ` --name nerd-dinner-db ` -v C:\databases\nd:C:\data ` dockeronwindows/ch03-nerd-dinner-db

The first time you run that container, the Dacpac will run to create the database, saving the data and log files in the mounted directory on the host. You can check whether the files exist on your host with ls, and the output from docker container logs shows the generated SQL script running and creating resources:

> docker container logs nerd-dinner-db
VERBOSE: Starting SQL Server
VERBOSE: Changing SA login credentials
VERBOSE: No data files - will create new database
Generating publish script for database 'NerdDinner' on server '.\SQLEXPRESS'.
Successfully generated script to file C:\init\deploy.sql.
VERBOSE: Changed database context to 'master'.
VERBOSE: Creating NerdDinner...
VERBOSE: Changed database context to 'NerdDinner'.
VERBOSE: Creating [dbo].[Dinners]... ...

The run command also publishes the standard SQL Server port 1433, so you can connect to the database running inside the container remotely through a .NET connection or with SQL Server Management Studio (SSMS). If you already have a SQL Server instance running on your host, you can map the container's port 1433 to a different port on the host.

To connect to the SQL Server instance running in the container with SSMS, Visual Studio, or Visual Studio Code, just use the container's IP address, select SQL Server Authentication, and use the sa credentials:

Then, you can work with the dockerized database just like any other SQL Server database, querying tables and inserting data. From the Docker host machine, you use the container's IP address as the database server name, but by publishing the port, you can access the containerized database outside of the host, using the host machine name as the server name. Docker will route any traffic on port 1433 into SQL Server running on the container.

主站蜘蛛池模板: 陵川县| 黄石市| 封丘县| 定兴县| 阳江市| 吉林省| 福安市| 衡阳县| 新宁县| 花莲市| 内乡县| 乳山市| 从江县| 峨眉山市| 霍邱县| 肥西县| 平湖市| 烟台市| 灵宝市| 罗田县| 恩平市| 鱼台县| 马鞍山市| 顺平县| 湟中县| 望城县| 平潭县| 水富县| 青河县| 吉隆县| 建宁县| 石景山区| 察雅县| 阿拉善右旗| 新巴尔虎左旗| 外汇| 西畴县| 左权县| 禄丰县| 托里县| 武邑县|