02-01 10:49
Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
관리 메뉴

기록을 합시다.

[docker] 팀원들이랑 사용할 oracle 도커 이미지 만들기 본문

공부/DB

[docker] 팀원들이랑 사용할 oracle 도커 이미지 만들기

울집고양이세마리 2023. 5. 30. 03:28

팀플을 현재 진행 하고 있는데, 도커 파일 하나 만들어서 다 같이 쓰면 좋을 것 같다는 생각을 했다. 

그래서 한 번 도커 이미지 만들어보기 도전을 해보았다. 

도커 프로젝트 폴더 생성하기

mkdir project-dockerfile

도커 프로젝트 내에서 도커 파일 생성하기

참고로 도커파일은 확장자가 없고, 그냥 파일명 자체가 Dockerfile이니 주의하자.

FROM gvenzl/oracle-xe

ENV ORACLE_PASSWORD=1234

RUN mkdir files

VOLUME [ "/oradata:/opt/oracle/oradata/gvenzl/oracle-xe" ]

COPY 001_projectDB.sql /container-entrypoint-initdb.d

EXPOSE 1521

참고한 이미지는 github에 올려져있는데, 설명도 잘 되어있어서 참고하면 좋을 것 같다.

 

GitHub - gvenzl/oci-oracle-xe: Build scripts for Oracle Database XE container/docker images

Build scripts for Oracle Database XE container/docker images - GitHub - gvenzl/oci-oracle-xe: Build scripts for Oracle Database XE container/docker images

github.com

sql 파일 작성하기

파일이름은 001_projdctDB.sql이다. 001, 002처럼 접두사를 붙여줘야 순서대로 sql 파일이 실행된다고 한다.
나는 그냥 sql 파일 하나에 다 때려박았는데, 나눠서 해도 좋을 것 같다. table 생성 sql 파일 따로, user 생성 sql 파일 따로 생성해도 되었을 것 같다.

create tablespace wahwahdev
datafile '/opt/oracle/files/wahwahdev.dbf' size 500m
autoextend on next 100m maxsize unlimited
default storage(initial 128k next 64k pctincrease 10);

alter session set "_ORACLE_SCRIPT" = true;

create user wahwahmaster identified by "1234"
default tablespace wahwahdev 
temporary tablespace temp;

grant connect, resource to wahwahmaster;

conn wahwahmaster/1234;

CREATE TABLE hospital_tbl (
  hospital_id varchar2(20) PRIMARY KEY,
  hospital_name varchar2(50),
  hospital_address varchar2(100),
  hospital_telno varchar2(50),
  created_at date
);

CREATE TABLE reserv_tbl (
  reserv_start date,
  allow varchar2(10),
  regdate date,
  user_id varchar2(30),
  hospital_id varchar2(20)
);

CREATE TABLE hosmaster_tbl (
  user_id varchar2(30),
  hospital_id varchar2(20),
  password varchar2(30),
  hospital_telno varchar2(30),
  hospital_email varchar2(50),
  supervisor varchar2(50)
);

CREATE TABLE review_tbl (
  hospital_id varchar2(20),
  user_id varchar2(30),
  content clob,
  like_cnt NUMBER,
  dislike_cnt number,
  ranking number
);

Dockerfile을 이미지로 올리기

docker build -t projectdb:latest .

이미지 이름을 proejctdb로 뒀고, 태그는 뭐든 상관 없어서, 나는 그냥 latest로 뒀다.

이미지를 컨테이너로 실행하기

docker run --name dbcontainer -d -p 1521:1521 projectdb:latest

이미 도커파일에서 설정을 다 해줬기 때문에, 포트 번호 빼고는 커맨드에서 딱히 옵션을 줄 필요가 없다.

컨테이너 로그 확인하기

로그에서 위처럼 쿼리문이 실행된 결과가 잘 나오면 성공한 게 맞다.

 

 

Comments