La procédure est la suivante.
--Créer une image de conteneur
--Les personnes qui souhaitent lancer une instance oracle, y compris des données sur le docker
Le code etc. décrit dans ce document est licence WTFPL2 [^ 2] sauf pour ceux dérivés d'autres documents de référence [^ 1], et toute garantie Il n'y a pas. [^ 1]: Ceux dérivés des matériaux de référence sont liés à la construction vagabond et docker. [^ 2]: De Wikipedia: fais ce que tu veux, merde, licence publique (contrat) De plus, la gestion des erreurs est lâche, veuillez donc l'améliorer.
Dans n'importe quel dossier (outils) [oracle-xe-11.2.0-1.0.x86_64.rpm.zip](http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index. html) (Oracle Database 11g Release 2 Express Edition pour Linux x64) est téléchargé. Placez le lot suivant dans n'importe quel dossier (outils).
get_oracle.bat(Pour les fenêtres)
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(Pour 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
Exécutez get_oracle.bat
ou get_oracle.sh
.
chmod + x get_oracle.sh
)
Si vous continuez sans erreur, vous aurez oracle / database 11.2.0.2-xe
.S'il est laissé tel quel, il n'aura pas bon goût du tout, alors je posterai la recette. (Comme il n'est pas persistant, les données seront réinitialisées si vous recréez le conteneur.)
docker-compose.yml
version: '3'
services:
##Décrivez les autres services au besoin
oracledb_test:
image: oracle/database:11.2.0.2-xe
ports:
- "1521:1521"
#- "8080:8080"
volumes:
#Le script s'exécute ici avec les privilèges dba. Si vous souhaitez utiliser sqlplus, imp, etc., placez le fichier sh
#Comme il est en lecture seule, soyez prudent lors de la sortie d'un fichier journal.
- ./oracledb/setup:/u01/app/oracle/scripts/setup:ro
#Conte plus tard
- ./oracledb/mnt:/mnt/local
shm_size: 1g
environment:
- NLS_LANG=Japanese_Japan.UTF8
- TZ=Asia/Tokyo
oracledb\setup\00_user_create.sql(UTF-8)
--Vous recevrez un mot de passe sans autorisation, alors changez-le(Veuillez spécifier un mot de passe absolument différent)
ALTER USER sys IDENTIFIED BY manager;
ALTER USER system IDENTIFIED BY manager;
--Utilisateur créé
CREATE USER test_user IDENTIFIED BY test_user DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users;
--Création de rôle
create role conn_testuser;
GRANT CREATE session, CREATE sequence, CREATE trigger, CREATE table, CREATE view, CREATE procedure, CREATE synonym TO conn_scn;
--Autorisation
GRANT conn_testuser TO test_user;
--Il se ferme sans autorisation, vous n'avez donc pas besoin de quitter.
Lors de la saisie de données avec sql, créez le fichier suivant.
oracledb\setup\01_ddl.sql(UTF-8)
--Changer de schéma
ALTER SESSION SET CURRENT_SCHEMA = test_user;
--Création de table, etc.
--Il se ferme sans autorisation, vous n'avez donc pas besoin de quitter.
Si vous souhaitez configurer une instance Oracle sur Vagrant, vous pouvez même créer une image en écrivant comme suit. Assurez-vous que la mémoire de l'instance de machine virtuelle est d'au moins 2 Go. (Sinon, vous ne pourrez pas démarrer oracle)
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
#Omission
#if Vagrant.has_plugin?("vagrant-cachier")
# config.cache.scope = :box
#end
#Omission
config.vm.provision "docker", run: "always"
#d'ici
# 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
#Jusque là
config.vm.provision "docker_compose",
compose_version: "1.24.1",
yml: "/vagrant/docker/docker-compose.yml",
run: "always"
end