daggerok/oracle

By daggerok

Updated over 6 years ago

Oracle Database 11g Express Edition Release 2 / 12c Standard Edition Release 1 (SE2)

Image

4.6K

Oracle DatabaseBuild Status

Automation build for docker hub

Tags

XE (size ~ 1G)

  • latest

  • 11.2.0.2-xe

  • xe

  • prebuiltdb

SE (size ~ 8G)

  • se
  • se2
  • latest
  • 12.1.0.2-se
  • 12.1.0.2-se2

NOTE: you can build same image by yourselves. read more

Usage


# xe
docker run -d --rm --name oracle-xe \
  --shm-size=1g \
  -p 1521:1521 \
  -e ORACLE_PWD=password \
  daggerok/oracle
# daggerok/oracle:xe
# daggerok/oracle:11.2.0.2-xe

# se
docker run -d --rm --name oracle-se \
  --shm-size=1g \
  -p 1521:1521 \
  -e ORACLE_SID=ORCLCDB \
  -e ORACLE_PWD=password \
  -e ORACLE_PDB=ORCLPDB1 \
  -e ORACLE_CHARACTERSET=AL32UTF8 \
  daggerok/oracle:12.1.0.2-se2
# daggerok/oracle:12.1.0.2-se
# daggerok/oracle:latest
# daggerok/oracle:se2
# daggerok/oracle:se

available parameters (from original documentation):


  --name

The name of the container (default: auto generated)


  --shm-size

Amount of Linux shared memory


  -p

The port mapping of the host port to the container port. Two ports are exposed: 1521 (Oracle Listener), 8080 (APEX)

The port mapping of the host port to the container port. Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express)


  -e ORACLE_PWD

The Oracle Database SYS, SYSTEM and PDB_ADMIN password (default: auto generated)


  -v /u01/app/oracle/oradata

  -v /opt/oracle/oradata

The data volume to use for the database. Has to be writable by the Unix "oracle" (uid: 54321) user inside the container! If omitted the database will not be persisted over container recreation.


  -v /u01/app/oracle/scripts/startup | /docker-entrypoint-initdb.d
  -v /u01/app/oracle/scripts/setup   | /docker-entrypoint-initdb.d

  -v /opt/oracle/scripts/startup | /docker-entrypoint-initdb.d
  -v /opt/oracle/scripts/setup   | /docker-entrypoint-initdb.d

Optional: A volume with custom scripts to be run after database startup.

docker-compose

simple


version: "2.1"

services:
  oracle-xe:
    image: daggerok/oracle:xe
    shm_size: 1g
    environment:
      ORACLE_PWD: password
    ports: ["1521:1521"]
    networks: [backing-services]

networks:
  backing-services:
    driver: bridge

advanced


version: "2.1"

services:
  oracle-se:
    image: daggerok/oracle:se
    shm_size: 1g
    environment:
      ORACLE_SID: xe
      ORACLE_PWD: password
    ports:
    - "1521:1521"
    - "5500:5500"
    volumes:
    - "oracle-se2-data:/opt/oracle/oradata"
    - "./db-startup-migration-scripts:/opt/oracle/scripts/startup"
    - "./db-setup-migration-scripts:/docker-entrypoint-initdb.d/setup"
    networks: [backing-services]
    restart: unless-stopped

volumes:
  oracle-se2-data: {}

networks:
  backing-services:
    driver: bridge

prepare yours! (without volumes config, so you can commit your own oracle and re-use it later)


# 1. start container with needed configurations
docker container run \
  --shm-size=1g \
  -p 8080:8080 -p 1521:1521 \
  -e ORACLE_PWD=password \
  -it --name oracle-xe \
  daggerok/oracle:prebuiltdb

# 2. wait until oracle database will be ready and gracefully stop oracle-xe container
docker container stop oracle-xe

# 3. commit container as an reusable image
docker commit -m 'Oracle XE with credentials SYSTEM / password' oracle-xe daggerok/oracle-xe:latest

# 4. docker push daggerok/oracle-xe:latest

# 5. usage (somewhere else): now you can re-use it without additional configurations, justl ike so:
docker container run \
  --shm-size=1g \
  -p 8080:8080 -p 1521:1521 \
  -it --name oracle-xe \
  daggerok/oracle-xe

Oracle XE for rapid development


docker container run \
  --shm-size=1g \
  -p 8080:8080 -p 1521:1521 \
  -it --name oracle-xe \
  daggerok/oracle-xe

NOTE 1: username: SYSTEM, password: password NOTE 2: using flag --shm-size=1g from my experience is required

Docker Pull Command

docker pull daggerok/oracle