Невозможно выполнить команду CMD в Docker для окон в файле Docker.
Я хочу выполнить несколько команд с использованием CMD, однако не могу выполнить даже одну команду.
Я попробовал следующее, и ничего не работает ...
1.
CMD "sqlcmd -S database -i C:\db\db_scripts\upgradescript.sql -U sa -P mypassword"
2.
RUN ["powershell", "-NoProfile", "-Command", "c:\db\db_scripts\script.ps1"]
3.
CMD ["cmd", "sqlcmd", "-S", "database", "-i", "C:\db\db_scripts\upgradescript.sql", "-U", "sa", "-P", "mypassword"]
4.
ARG arg1=database
ARG arg2=C:\db\db_scripts\upgradescript.sql
ARG arg3=sa
ARG arg4=mypassword!
RUN ["cmd", "-NoProfile", "-Command", "sqlcmd -S $env:arg1 -i $env:arg2 -U $env:arg3 -P $env:arg4"]
5.
RUN powershell.exe c:\db\db_scripts\script.ps1
6.
ENTRYPOINT ["powershell", "-NoProfile", "-Command", "sqlcmd"]
CMD ["-S database -i C:\db\db_scripts\upgradescript.sql -U sa -P mypassword"]
ФАЙЛЫ ПОДДЕРЖКИ:
A.Script.ps1 (используется 2 и 5)
cmd /c "sqlcmd -S database -i C:\db\db_scripts\upgradescript.sql -U sa -P mypassword"
B.Dockerfile
# escape=`
FROM microsoft/mssql-server-windows-developer
COPY db\* c:\db\
COPY db_scripts\* c:\db\db_scripts\
ENV attach_dbs="[{'dbName':'ABC','dbFiles':['C:\db\ABC.mdf','C:\db\ABC_Log.ldf']},{'dbName':'XYZ','dbFiles':['C:\db\XYZ.mdf','C:\db\XYZ_Log.ldf']}]"
CMD "sqlcmd -S database -i C:\db\db_scripts\upgradescript.sql -U sa -P mypassword"
Обратите внимание, мне не нужно использовать «\\» из-за escape-символа.
НАБЛЮДЕНИЯ
Контейнерзапускается и исчезает через несколько секунд.
Если я удаляю часть CMD, контейнеры работают нормально.Я могу попасть в контейнер и выполнить указанную выше команду sqlcmd
в cmd
shell.
Что я делаю не так, что отсутствует, какой-то лучший подход и т. Д. Может ли кто-нибудь дать какое-нибудь руководство, пожалуйста?Спасибо!
Редактировать:
Судя по ответу Джоша, эта команда ENTRYPOINT работает только для меня (делиться, чтобы другие могли извлечь пользу или даже опубликовать лучший способделаем это) ...
ENV arg1 database
ENV arg2 C:\db\db_scripts\upgradescript.sql
ENV arg3 sa
ENV arg4 mypassword
ENTRYPOINT ["powershell sleep(60); sqlcmd"]
CMD ["-S $env:arg1 -i $env:arg2 -U $env:arg3 -P $env:arg4"]