Das Verfahren ist wie folgt.
--Erstellen Sie ein Container-Image
Der in diesem Dokument beschriebene Code usw. ist WTFPL2-Lizenz [^ 2], mit Ausnahme derjenigen, die aus anderen Referenzmaterialien [^ 1] stammen, und jeglicher Garantie Es gibt kein. [^ 1]: Die aus den Referenzmaterialien abgeleiteten beziehen sich auf den Bau von Landstreichern und Hafenarbeitern. [^ 2]: Aus Wikipedia: Mach was du willst, Scheiße, öffentliche Lizenz (Vertrag) Außerdem ist die Fehlerbehandlung locker, also verbessern Sie sie bitte.
In einem beliebigen Ordner (Tools) oracle-xe-11.2.0-1.0.x86_64.rpm.zip. html) (Oracle Database 11g Release 2 Express Edition für Linux x64) wird heruntergeladen. Legen Sie den folgenden Stapel in einen beliebigen Ordner (Werkzeuge).
get_oracle.bat(Für Windows)
set WORKING_DIR=%TMP%\oracle_build_wk
set CURRENT_DIR=%CD%
echo %WORKING_DIR%
mkdir %WORKING_DIR%
copy oracle-xe-11.2.0-1.0.x86_64.rpm.zip %WORKING_DIR%\
cd %WORKING_DIR%
curl --output Dockerfile.xe -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.xe
curl --output checkDBStatus.sh -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/checkDBStatus.sh
curl --output runOracle.sh -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle.sh
curl --output setPassword.sh -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/setPassword.sh
curl --output xe.rsp -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/xe.rsp
docker build %WORKING_DIR% --force-rm=true --no-cache=true --shm-size=1G --build-arg DB_EDITION=xe -t oracle/database:11.2.0.2-xe -f Dockerfile.xe > %CURRENT_DIR%\oracle11g_build.log 2>&1
cd %CURRENT_DIR%
del /Q /S %WORKING_DIR%
echo DONE
get_oracle.sh(Für Linux)
#!/bin/sh
WORKDIR=/tmp/oracle11
CURRENTDIR=$(pwd)
mkdir $WORKDIR
cp oracle-xe-11.2.0-1.0.x86_64.rpm.zip $WORKDIR/
cd $WORKDIR
curl --output Dockerfile.xe -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/Dockerfile.xe
curl --output checkDBStatus.sh -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/checkDBStatus.sh
curl --output runOracle.sh -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/runOracle.sh
curl --output setPassword.sh -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/setPassword.sh
curl --output xe.rsp -sSL --url https://github.com/oracle/docker-images/raw/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2/xe.rsp
DOCKEROPS=""
VERSION=11.2.0.2
EDITION="xe"
DOCKERFILE="Dockerfile"
DOCKEROPS="--shm-size=1G $DOCKEROPS";
IMAGE_NAME="oracle/database:$VERSION-$EDITION"
DOCKERFILE="$DOCKERFILE.$EDITION"
docker build ./ --force-rm=true --no-cache=true \
$DOCKEROPS --build-arg DB_EDITION=$EDITION \
-t $IMAGE_NAME -f $DOCKERFILE
cd $CURRENTDIR
rm -rf $WORKDIR
echo DONE
Führen Sie get_oracle.bat
oder get_oracle.sh
aus.
chmod + x get_oracle.sh
)
Wenn Sie ohne Fehler fortfahren, haben Sie oracle / database 11.2.0.2-xe
.Wenn es so bleibt, wie es ist, wird es überhaupt nicht gut schmecken, also werde ich das Rezept veröffentlichen. (Da es nicht persistent ist, werden die Daten zurückgesetzt, wenn Sie den Container neu erstellen.)
docker-compose.yml
version: '3'
services:
##Beschreiben Sie andere Dienste nach Bedarf
oracledb_test:
image: oracle/database:11.2.0.2-xe
ports:
- "1521:1521"
#- "8080:8080"
volumes:
#Das Skript hier wird mit dba-Berechtigungen ausgeführt. Wenn Sie sqlplus, imp usw. verwenden möchten, platzieren Sie die sh-Datei
#Seien Sie vorsichtig, wenn Sie eine Protokolldatei ausgeben, da diese schreibgeschützt ist.
- ./oracledb/setup:/u01/app/oracle/scripts/setup:ro
#Conte später
- ./oracledb/mnt:/mnt/local
shm_size: 1g
environment:
- NLS_LANG=Japanese_Japan.UTF8
- TZ=Asia/Tokyo
oracledb\setup\00_user_create.sql(UTF-8)
--Sie erhalten ein Passwort ohne Erlaubnis, ändern Sie es also(Bitte geben Sie ein völlig anderes Passwort an)
ALTER USER sys IDENTIFIED BY manager;
ALTER USER system IDENTIFIED BY manager;
--Benutzer erstellt
CREATE USER test_user IDENTIFIED BY test_user DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users;
--Rollenerstellung
create role conn_testuser;
GRANT CREATE session, CREATE sequence, CREATE trigger, CREATE table, CREATE view, CREATE procedure, CREATE synonym TO conn_scn;
--Genehmigung
GRANT conn_testuser TO test_user;
--Es wird ohne Erlaubnis geschlossen, sodass Sie nicht beenden müssen.
Erstellen Sie bei der Eingabe von Daten mit SQL die folgende Datei.
oracledb\setup\01_ddl.sql(UTF-8)
--Schema wechseln
ALTER SESSION SET CURRENT_SCHEMA = test_user;
--Tabellenerstellung usw.
--Es wird ohne Erlaubnis geschlossen, sodass Sie nicht beenden müssen.
Wenn Sie eine Oracle-Instanz in Vagrant einrichten möchten, können Sie sogar ein Image erstellen, indem Sie wie folgt schreiben. Stellen Sie sicher, dass der Instanzspeicher der virtuellen Maschine mindestens 2 GB beträgt. (Andernfalls können Sie Oracle nicht starten.)
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
#Unterlassung
#if Vagrant.has_plugin?("vagrant-cachier")
# config.cache.scope = :box
#end
#Unterlassung
config.vm.provision "docker", run: "always"
#von hier
# Setup docker image for oracle 11g XE environment
config.vm.synced_folder "./tools", "/tmp/tools", create: true
config.vm.provision "shell", inline: <<-SHELL
cd /tmp/tools
/bin/sh ./get_oracle.sh
SHELL
#Bisher
config.vm.provision "docker_compose",
compose_version: "1.24.1",
yml: "/vagrant/docker/docker-compose.yml",
run: "always"
end