기록을 합시다.
[docker] 팀원들이랑 사용할 oracle 도커 이미지 만들기 본문
팀플을 현재 진행 하고 있는데, 도커 파일 하나 만들어서 다 같이 쓰면 좋을 것 같다는 생각을 했다.
그래서 한 번 도커 이미지 만들어보기 도전을 해보았다.
도커 프로젝트 폴더 생성하기
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에 올려져있는데, 설명도 잘 되어있어서 참고하면 좋을 것 같다.
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
이미 도커파일에서 설정을 다 해줬기 때문에, 포트 번호 빼고는 커맨드에서 딱히 옵션을 줄 필요가 없다.
컨테이너 로그 확인하기
로그에서 위처럼 쿼리문이 실행된 결과가 잘 나오면 성공한 게 맞다.
'공부 > DB' 카테고리의 다른 글
[SQL] ORACLE SQL 공부 -2- (0) | 2023.07.29 |
---|---|
[SQL] ORACLE SQL 공부 -1- (0) | 2023.07.26 |
[Oracle] 데이터베이스 생성 및 계정 생성 (0) | 2023.04.25 |
[Oracle] Oracle 21C XE Windows11에서 설치하기 + SQL Developer (1) | 2023.04.25 |
Email은 Primary Key가 될 수 있을까?(feat. 스택오버플로우) (0) | 2023.04.13 |
Comments