【发布时间】:2020-12-06 22:07:09
【问题描述】:
我尝试在容器部署后运行脚本。
不幸的是,目前脚本在我运行“docker-compose up”命令后立即启动。
这是一个 Oracle 数据库的映像,需要几分钟才能部署。
现在我进入容器启动脚本来创建数据库。
现在我想通过在部署容器后立即部署数据库来自动执行此操作。
有什么想法吗?
Docker 撰写:
version : "3"
services:
oracle:
build:
context: .
dockerfile: ./Dockerfile
ports:
- "11521:1521"
environment:
- ORACLE_PWD=testing12345
volumes:
- ./:/var/www/html
Docker 文件:
FROM oracle/database:18.4.0-xe
COPY deployDb.sh /usr/local/bin/deployDb.sh
RUN chmod +x /usr/local/bin/deployDb.sh
CMD ["/bin/bash", "/usr/local/bin/deployDb.sh"]
脚本:
#!/bin/bash
CONNT_ADMIN=system/testing12345@localhost #your env
SQL_FILE_DATA=./testdata_SO-Emballage.sql
SQL_FILE_DB=./crebas_SO-Emballage.sql
sqlplus -s ${CONNT_ADMIN} <<EOF
ALTER SESSION SET "_ORACLE_SCRIPT"=true;
DROP USER so_emballage cascade;
CREATE USER so_emballage IDENTIFIED BY so_emballage;
GRANT connect, resource to so_emballage;
@${SQL_FILE_DB}
@${SQL_FILE_DATA}
EOF
返回:
Creating network "mspr_default" with the default driver
Building oracle
Step 1/4 : FROM oracle/database:18.4.0-xe
---> 48fc445cf732
Step 2/4 : COPY deployDb.sh /usr/local/bin/deployDb.sh
---> 00698cc72614
Step 3/4 : RUN chmod +x /usr/local/bin/deployDb.sh
---> Running in 8d335146f651
Removing intermediate container 8d335146f651
---> 7ff62847fca6
Step 4/4 : CMD ["/bin/bash", "/usr/local/bin/deployDb.sh"]
---> Running in 6edda8873fa4
Removing intermediate container 6edda8873fa4
---> d9222babdb0a
Successfully built d9222babdb0a
Successfully tagged mspr_oracle:latest
Creating mspr_oracle_1 ... done
Attaching to mspr_oracle_1
oracle_1 | ERROR:
oracle_1 | ORA-12541: TNS:no listener
oracle_1 |
oracle_1 |
oracle_1 | ERROR:
oracle_1 | ORA-12547: TNS:lost contact
oracle_1 |
oracle_1 |
oracle_1 | SP2-0306: Invalid option.
oracle_1 | Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
oracle_1 | where <logon> ::= <username>[/<password>][@<connect_identifier>]
oracle_1 | <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
oracle_1 | SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
mspr_oracle_1 exited with code 1
【问题讨论】: