在入口点完成后,Docker-compose会停止容器

时间:2018-01-24 10:47:52

标签: sql-server bash docker docker-compose

我需要带有一些数据库的sql server容器。我准备了以下dockerfile:

FROM microsoft/mssql-server-linux:latest
ENV ACCEPT_EULA Y
ENV SA_PASSWORD yourStrong(!)Password
WORKDIR sqlserver
COPY load_db.sh load_db.sh
COPY /resources/sql/ sql
ENTRYPOINT ./load_db.sh

所以它运行load_db.sh:

#!/usr/bin/env bash

SERVER_OUT=/var/log/sqlserver.out
TIMEOUT=90
/opt/mssql/bin/sqlservr &>${SERVER_OUT} &

function server_ready() {
    grep -q -F 'Recovery is complete.' ${SERVER_OUT}
}

echo 'Wait until Microsoft SQL Server is up'
for (( i=0; i<${TIMEOUT}; i++ )); do
    sleep 1
    if server_ready; then
        break
    fi
done
echo 'Microsoft SQL Server is up'

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ${SA_PASSWORD} -Q "CREATE DATABASE MarketDataService;"
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ${SA_PASSWORD} -d MarketDataService -i sql/2018.0100.000000001.Add_Layout_table.sql

要运行它,我已准备好followinf docker-compose文件:

services:
  db:
    build:
      context: .
      dockerfile: Dockerfile-db
    ports:
    - 1433:1433

当我尝试运行docker-compose up --build时,它看起来没问题。 我有输出:

db_1       | Wait until Microsoft SQL Server is up
db_1       | Microsoft SQL Server is up
db_1       |
db_1       | (3 rows affected)

但是退出之后......

amptest_db_1 exited with code 0

为了解决这个问题,我尝试添加tty: true,但这没有意义。相同的输出。如何通过docker-compose保持我的容器存活? Here我找到了tail -F anything。它有效,但看起来很糟糕。还有更好的方法吗?

更新:我住在tail -F '/var/log/sqlserver.out'

0 个答案:

没有答案
相关问题