如何在`ms-sql-server`容器中执行命令?

时间:2018-01-03 07:01:42

标签: php sql-server docker docker-compose

我现在正试图模拟生产环境 终极目标:
1. Apache
2. php5
3. Microsoft SQL Server
4. Create database
5. Make database schema
6. Connect from website

其中3个我可以通过DockerFiledocker-compose.yml轻松实现 问题是第4次

DockerFile

FROM debian:7

RUN apt-get update
RUN apt-get install -y freetds-common freetds-bin unixodbc php5-sybase apache2


RUN mkdir /source
WORKDIR /source

COPY application ./applications
COPY assets ./assets
COPY pushnotification ./pushnotification
COPY system ./system
COPY uploads ./uploads
COPY web.config .

docker-compose.yml

version: '3'

services:

  mssql:
    image: microsoft/mssql-server-linux:latest
    environment:
      ACCEPT_EULA: Y
      SA_PASSWORD: <password>
      MSSQL_PID: Developer
    restart: "always"
    ports:
        - "1433:1433"

  backend:
    container_name: gen365-cms
    build:
      context: .
      dockerfile: DockerFile
    links:
      - mssql
    ports:
      - "8081:8080"

我正在尝试根据manual

创建数据库
$ docker exec -it a3063bbff978 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P phohHa0gyahh2Vah
1> select Name from sys.databases;
2> \q
3> ;
4> exit

问题: 如何为container创建数据库?

2 个答案:

答案 0 :(得分:1)

为SQL Server创建Dockerfile并使用COPY命令复制sql脚本文件(使用命令创建数据库和模式)并使用RUN命令在创建映像时运行sql脚本并从Image创建容器。它将解决问题。

请参阅以下链接: https://github.com/twright-msft/mssql-node-docker-demo-app

答案 1 :(得分:0)

为什么不创建SQL容器,然后使用SSMS并运行创建数据库所需的任何脚本?然后,停止容器,并将其提交到图像,你可以使用支持传送n个实例的图像吗?