рдХреЛрдб рдХреЛ DBMS рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред Testcontainers рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдЖрдкрдХреЛ HSQLDB / H2 рдЬреИрд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рдорд╛рди рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА DBMS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рд╣реЛрдЧреА

рдпрд╣ рд▓реЗрдЦ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдЬреЛ рдЯреЗрд╕реНрдЯрдХрдиреЗрдХреНрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рд╣реБрдИ, рдФрд░ рдпрд╣рд╛рдБ рдореИрдВ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдБред
рдореИрдВ Oracle 11 рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдПрдХрддреНрд░ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрд╕реНрдХрд░рдг 11 рд╣реИред рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде, рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдХреЛрдб рднреА рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП testcontainers рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рджреВрд╕рд░реЗ, рдпрд╣ рд╕рд░рд▓ рд╣реИред рдФрд░ рддреАрд╕рд░рд╛, рдпрд╣ рд▓рдЧрднрдЧ рд╡рд╕рдВрдд рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рднреА рдЕрдЯрдХ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╢реВрдиреНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдбреЙрдХрдЯрд░ рдФрд░ рдЯреЗрд╕реНрдЯрдХреЙрдиреНрдЯреЗрдирд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рддрд╣реА рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛ рдХреЛ рднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИред рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рд┐рдирдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ msys2 рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдбреЗрдореЛ рдХреЛрдб github рдкрд░ рдпрд╣рд╛рдВ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ https://github.com/poxu/testcontainers-spring-demo рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ Oraklov рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдореЗрдВ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ https://hithub.com/poxu/docker-images/tree/ рдорд╛рд╕реНрдЯрд░ / OracleDatabase / SingleInstance
рдПрдХ рдбреЙрдХрд░ рдЫрд╡рд┐ рдмрдирд╛рдПрдБ
рдУрд░реЗрдХрд▓ рдбреЙрдХрдЯрд░ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпрд╛рдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреАрдереВрдм рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд┐рдП рд╣реИрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрди рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдЫрд╡рд┐ рд╕реЗ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрдВрдЯреЗрдирд░ рджреЛ рд╕реЗ 20 рдорд┐рдирдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдУрд░реЗрдХрд▓ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдореИрдВ рдпрд╣рд╛рдБ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реАрдЯреЗрд▓рд┐рдВрдЧ рдХрд░реВрдБрдЧрд╛, рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдПрдХ рдФрд░ рдкреВрд░рд╛ рдирд┐рд░реНрджреЗрд╢ рд╕реНрдерд┐рдд рд╣реИ https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance
Oracle рд╕реЗ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЫрд╡рд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЫрд╡рд┐ рдХреЛ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
git clone https://github.com/oracle/docker-images.git
рдлрд┐рд░ рдУрд░реЗрдХрд▓ 11.2.0.2 рдХреЗ рдЕрдзрд┐рдХреГрдд рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд░рдкреАрдПрдо рдкреИрдХреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрд╣ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдУрд░реЗрдХрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдУрд░реЗрдХрд▓ рдбреАрдмреАрдПрдордПрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ, рд╡рд╣рд╛рдВ рд╕рдВрд╕реНрдХрд░рдг 11.2.0.2 рдПрдХреНрд╕рдИ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдкреИрдХ рдЖрд░рдПрдХреНрд╕рдПрд▓ рдлрд╝рд╛рдЗрд▓ oracle-xe-11.2.0 рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ -1.0.x86 ~ 64 ~ .rpm.zip
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ docker-images / OracleDatabase / SingleInstance / dockerfiles / 11.2.0.2 / рдореЗрдВ рдбрд╛рд▓реЗрдВред
рдЗрд╕рдХреЗ рдмрд╛рдж, docker-images / OracleDatabase / SingleInstance / dockerfiles рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ
./buildDockerImage.sh -v 11.2.0.2 -x
рдбреЙрдХрдЯрд░ рдПрдХ рдЪрд┐рддреНрд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ oracle / database рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: 11.2.0.2-xe рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдкрдХреЛ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
docker run --rm --name vanilla_oracle_test_habr \ -p 1234:1521 \ -p 5678:5500 \ -e ORACLE_PWD=123 \ --shm-size="1g" \ oracle/database:11.2.0.2-xe
рдХрдВрдЯреЗрдирд░ рдХреБрдЫ рдорд┐рдирдЯ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреЗрдЬ рдирд╣реАрдВ рд╣реИред
рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рдмреИрдирд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛
#########################
DATABASE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ!
#########################
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╛рд╕рд╡рд░реНрдб 123 рд╣реИ, рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╣реИ рдФрд░ рдПрд╕рдЖрдИрдбреА рдПрдХреНрд╕рдИ рд╣реИред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЯреЗрд╕реНрдЯрдХрдиреЗрдХреНрдЯрд░реНрд╕ рдХреЗ рддрд╣рдд рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдкрд╣рд▓реЗ рдУрд░реЗрдХрд▓ рд╕реЗ рдореИрдиреБрдЕрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдкрддрд╛ рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВ, рдХрдВрдЯреЗрдирд░ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рд╕рдВрднрд╡рддрдГ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛ рд░рд╣рд╛ рд╣реИред рд▓реЙрдиреНрдЪ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрдВрдЯреЗрдирд░ рдХреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдореИрдиреБрдЕрд▓ рдЫрд╡рд┐ рд╢реЛрдзрди
рд╕рдорд╛рдкреНрдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдПрдХ рдирдИ рдЫрд╡рд┐ рдкрд░ рд╕рд╣реЗрдЬреЗрдВред
рдпрд╣ рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рди рдХрд░реЗрдВ - рдЖрд░рдПрдо, рдЕрдиреНрдпрдерд╛ рдбреЙрдХрдЯрд░ рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╣рд░рд╛ рджреЗрдЧрд╛ред
docker commit --message "container for unit tests" <container id> my/oracle-11.2.0.2-for-unit-tests
рдпрд╣ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдПрдХ рдирдИ рдЫрд╡рд┐ рдмрдирд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рди рдХреЗрд╡рд▓ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд▓реНрдХрд┐ 20 - 30 рд╕реЗрдХрдВрдбред
рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдПрдХ рддреИрдпрд╛рд░ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕рдВрд╢реЛрдзрди
рдмреЗрд╢рдХ, рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рджреЗрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЫрд╡рд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдбреЙрдХрдЯрд░рд╛рдЗрд▓ рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдЙрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
CMD exec $ORACLE_BASE/$RUN_FILE
\ $ ORACLE ~ BASE ~ / \ $ RUN ~ рдлрд╝рд╛рдЗрд▓ ~ рдлрд╝рд╛рдЗрд▓ docker-images / OracleDatabase / SingleInstance / dockerfiles / 11.2.0.2 / runOracle.sh рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ
рдпрджрд┐ рдЖрдк рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реА рдмрд╛рд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛ рджреЗрдЧрд╛, рдФрд░ рджреВрд╕рд░реА рдмрд╛рд░ рдпрд╣ рдмрд╕ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЫрд╡рд┐ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдЪрд░рдг рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЫрд╡рд┐ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рд╛рд╣рд╕рд┐рдХ рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ, рдПрдХ рдЬрдЯрд┐рд▓рддрд╛ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЪрд▓рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд рдЬрдм рддрдХ рдХрд┐ рдПрдХ рд╕рдВрдХреЗрдд рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RunOracle.sh рдлрд╝рд╛рдЗрд▓ рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрдорд╛рдВрдб рд╣реИред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрдЯреЗрдЬ рдкрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдХрд╛рдо рдЦрддреНрдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╕рд╢рд░реНрдд рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдбрд╛рд▓реЗрдВрдЧреЗред
рдпрд╣ рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рддрд░реНрдХ-рдЖрдпрд╛рдореА-рднрд╡рди рдирд┐рд░реНрдорд╛рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдпрд╣ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рднреА рд╕рдВрдХреЗрдд рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдмрд╕ рдХрд╛рд░реНрдп рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░реЗрдВред рдЕрд░реНрдерд╛рддреН, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВ:
if [ "$1" != "--running-while-building" ] then wait $childPID fi
рдареАрдХ рд╣реИ, рдбреЙрдХрдЯрд░рд╛рдЗрд▓ рдореЗрдВ рд╣рдо рдПрдХ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЙрд▓ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрдЯреЗрдЬ рдкрд░ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
RUN $ORACLE_BASE/$RUN_FILE --running-while-building CMD exec $ORACLE_BASE/$RUN_FILE
рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди
рдорд╛рддреНрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдо рдХрд░реЗрдВ
рд▓рд╛рдЗрди рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
VOLUME ["$ ORACLE ~ BASE ~ / oradata"]
рдФрд░ рдЙрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдлреЗрдВрдХ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЫрд╡рд┐рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╕рдордп рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
rm -rf $ORACLE_HOME/demo && \ rm -rf $ORACLE_HOME/jdbc && \ rm -rf $ORACLE_HOME/jlib && \ rm -rf $ORACLE_HOME/md && \ rm -rf $ORACLE_HOME/nls/demo && \ rm -rf $ORACLE_HOME/odbc && \ rm -rf $ORACLE_HOME/rdbms/jlib && \ rm -rf $ORACLE_HOME/rdbms/public && \ rm -rf $ORACLE_HOME/rdbms/demo && \ rm -rf $ORACLE_HOME/bin/rman && \
рд▓рд╛рдЗрди рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ
chmod ug+x $ORACLE_BASE/*.sh
рдпрд╣ рдЫрд╡рд┐ рд╕реЗ рдЙрди рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред рдЫрд╡рд┐ рдЬрд┐рддрдиреА рдЫреЛрдЯреА рд╣реЛрдЧреА, рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдЫрд╡рд┐ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
рдЫрд╡рд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдХреНрд╡реИрд╢ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЫрд╡рд┐ рд╕реЗ рдкрд░рддреЛрдВ рдореЗрдВ рдЕрд▓рдЧрд╛рд╡ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЗрд╕рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред рд╕реНрдХреНрд╡реИрд╢ рддрд░реНрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдбреЙрдХрдЯрд░ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, docker-images / OracleDatabase / SingleInstance / dockerfiles / buildDockerImage.sh -o рддрд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╣реИ рдХрд┐ - doquer рддрд░реНрдХ рдХреЛ рдЖрдЧреЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ buildDockerImage.sh рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
./buildDockerImage.sh -o '--squash'
рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ
рддрд┐рдерд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдУрд░реЗрдХрд▓ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдЫрд╡рд┐ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА buildDockerImage.sh рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдбрд┐рдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдореЗрдЬ рдХрд╛ рдирд╛рдо IMAGE ~ NAME ~ рд╡реИрд░рд┐рдПрдмрд▓ рд╕реЗ рд▓реЗрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдорд╛рди рд╕реАрдзреЗ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣реАрдВ
# Oracle Database Image Name IMAGE_NAME="oracle/database:$VERSION-$EDITION"
рдореИрдВ рдмрджрд▓ рдЧрдпрд╛
# Oracle Database Image Name IMAGE_NAME="my/oracle-for-habr:$VERSION-$EDITION"
DB рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░реЗрдВ
рдпрд╣ рдкрд╛рд╕рд╡рд░реНрдб рдХрдВрдЯреЗрдирд░ рдХреА рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд рдХреЗ рджреМрд░рд╛рди рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ ORACLE ~ PWD ~ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрдЕрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪрд░ рдХреЛ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдЗрд╕реЗ рдбреЙрдХрдЯрд░рд╛рдЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
ENV ORACLE_PWD=123
рдпрджрд┐ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рддрд░реНрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк -o рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ
./buildDockerImage.sh -v 11.2.0.2 -x -o '--squash --build-arg ORACLE_PWD=123'
рдпрд╣ ORACLE ~ PWD ~ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ dockerfile рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди dockerfile рдЗрд╕реЗ рдЙрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд╣реАрдВ рджреЗрдЧрд╛ рдЬреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЪрд▓рддреА рд╣реИрдВред рдЙрд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ ARG рдирд┐рд░реНрджреЗрд╢ рдХреЛ dockerfile рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
ARG ORACLE_PWD=default
рдкрд╛рд╕рд╡рд░реНрдб, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ, 123 рд╣реЛрдЧрд╛, рдФрд░ рдпрджрд┐ рдЖрдк ORDLE ~ PWD ~ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП DoDererImage.sh рддрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯред
рдХрднреА-рдХрднреА рдУрд░реЗрдХрд▓ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдЦрд░рд╛рдм рд╣реИ рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП 123 рдХреЛ рдХреБрдЫ рдФрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
рдЕрдм рдЖрдк рдЫрд╡рд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
docker run --rm --name dockertest_habr \ -p 1234:1521 \ -p 5678:5500 \ --shm-size="1g" \ my/oracle-for-habr:11.2.0.2-xe
рддрд░реНрдХ --shm- рдЖрдХрд╛рд░ = "1g" рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Oracle 11.2.0.2 рд╣реА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣, рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХреЛ рдПрдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд░реИрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╣ рд▓рдЧрднрдЧ 100 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдЦрд╛рддреА рд╣реИред
рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмрдврд╝ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИред
рдЖрдзрд╛рд░ рдкрддрд╛ - рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ
рдкреЛрд░реНрдЯ - 1234
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ - рд╕рд┐рд╕реНрдЯрдо
рдкрд╛рд╕рд╡рд░реНрдб - 123
рдпрджрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
DB рдЖрд░рдВрднреАрдХрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЫрд╡рд┐ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рд╡рд╣рд╛рдВ рдПрдХ рд╕рд░реНрдХрд┐рдЯ рд╣реЛред рдЖрдк рдЗрд╕ рд╕рд░реНрдХрд┐рдЯ рдХреЛ рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдЬ рдкрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдирд░ рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдЗрд╕реЗ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдВрдЯреЗрдирд░ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА u01 / app / oracle / рд▓рд┐рдкрд┐рдпреЛрдВ / рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рджрд┐рдЦреЗрдЧрд╛ рдФрд░ рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╕рднреА sql рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛, рдЬреЛ рдХрд┐ рдЖрдк рд╡рд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓рдХрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рд░реНрдХрд┐рдЯ рдмрдирд╛рдПрдЧреАред рдХреБрдЫ рдЗрд╕ рддрд░рд╣ред
CREATE USER TEST_USER IDENTIFIED BY passwordnoquotes; ALTER USER TEST_USER QUOTA unlimited ON SYSTEM; GRANT CREATE SESSION, CONNECT, RESOURCE, DBA TO TEST_USER; GRANT ALL PRIVILEGES TO TEST_USER;
рдпрд╣ рд╕рдм init ~ db ~ .sql рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ -v рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
docker run --rm --name dockertest_habr \ -p 1234:1521 \ -p 5678:5500 \ -e ORACLE_PWD=123 \ -v ${PWD}/init_db.sql:/u01/app/oracle/scripts/startup/init_db.sql \ --shm-size="1g" \ my/oracle-for-habr:11.2.0.2-xe
\ $ {рдкреАрдбрдмреНрд▓реНрдпреВрдбреА} рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреВрд░реНрдг рдкрде рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╡рд┐рдВрдбреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐, рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░реАрдХреНрд╖рдг ~ USER ~ рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЖрдк рддрд╛рдЬреЗ рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкреЗрдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЬрдм рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреИрд╢ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рдЙрдард╛рдиреЗ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдмрдирд╛рдХрд░ рдЬрд╛рдирд╡рд░ рдмрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реВрдВред рдЕрд╕рд▓реА рдПрдХ, рдХреЛрдВрдбреЛред
рдУрд░реЗрдХрд▓ рдПрдХреНрд╕рдИ рдХреЗ рд▓рд┐рдП, рдЯреЗрд╕реНрдЯрдХрдиреЗрдХреНрдЯрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рд╡рд░реНрдЧ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╡рд░реНрдЧ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ DBMS рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕реЗ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрдВ jdbc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдЦреБрдж рдХреЛ рдЙрдард╛рдП рдЬрд╛рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧреА, рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рд▓реЙрдЧ рд╣реИред
import org.testcontainers.containers.BindMode; import org.testcontainers.containers.OracleContainer; public class StaticOracleContainer { public static OracleContainer getContainer() { return LazyOracleContainer.ORACLE_CONTAINER; } private static class LazyOracleContainer { private static final OracleContainer ORACLE_CONTAINER = makeContainer(); private static OracleContainer makeContainer() {
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреЗрд╕реНрдЯрдХрдиреЗрдХреНрдЯрд░реНрд╕, рдЬрдм рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд╛рд╣рд░реА рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдореИрдк рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдбрд░ рдирд╣реАрдВ рд╕рдХрддреЗ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдирд╣реАрдВ рдЙрдареЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреЛрд░реНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдХрдВрдЯреЗрдирд░ рд╕реЗ рдПрдХ рдмрд╛рд╣рд░реА рдкреЛрд░реНрдЯ getOraclePort () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдк рдХрдВрдЯреЗрдирд░ рдПрдбреНрд░реЗрд╕ рдХреЛ getContainerIpAddress () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдпрд╣ рд╡рд┐рдзрд┐ рд╣реИред
GetContainer рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдХреЙрд▓ рдХреЗ рдмрд╛рдж, рдХрдВрдЯреЗрдирд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рдПрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдм рдирдВрдЧреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдпрд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХрд┐рд╕реА рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХреЗ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдкреЛрд░реНрдЯ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкрддрд╛ рдирд┐рдХрд╛рд▓ рд╕рдХреЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрджрд░реНрдн рдХреЛ рдмрдврд╝рд╛рддреЗ рд╕рдордп, рдЙрди рд╕реНрдкреНрд░рд┐рдВрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдЧрд╛ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред
рд╡рд╕рдВрдд рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯрдХрдиреЗрдХреНрдЯрд░реНрд╕ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕
рдХрдВрдЯреЗрдирд░ рдХреЛ рдКрдкрд░ рдЙрдард╛рдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЙрд╕ рд╕рдм рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рдХреЛрдИ badcorp.testcontainers.enabled рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ application.properties рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдРрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рднреА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдЯреЗрдХреНрдирдЯреЗрдирд░ рдирд╣реАрдВ рд╣реИред
package com.evilcorp.demo; import org.junit.platform.commons.logging.Logger; import org.junit.platform.commons.logging.LoggerFactory; import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; import org.testcontainers.containers.OracleContainer; public class TestcontainersInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { static Logger log = LoggerFactory.getLogger(TestcontainersInitializer.class); @Override public void initialize(ConfigurableApplicationContext applicationContext) {
рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдордХреНрдЦреА рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Testcontainers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
рдкрд░реАрдХреНрд╖рдг рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╕реНрддреБ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ, рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВред
package com.evilcorp.demo; import com.evilcorp.demo.entity.User; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ContextConfiguration; import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNotSame; import static org.junit.jupiter.api.Assertions.assertTrue; @SpringBootTest @ContextConfiguration(initializers = {TestcontainersInitializer.class}) class TestcontainersSpringDemoApplicationTests { @Autowired UserRepository userRepository; private User createdUser; @BeforeEach void setUp() { createdUser = new User(); createdUser.setName("Fry"); userRepository.save(createdUser); } @Test void userRepositoryLoaded() { assertNotNull(userRepository); } @Test void userAdded() { final Optional<User> loadedUser = userRepository.findById(createdUser.getUserId()); assertTrue(loadedUser.isPresent()); assertEquals("Fry", loadedUser.get().getName()); assertNotSame(createdUser, loadedUser.get()); } }
рдФрд░ рд╣рд╛рдВ, pom.xml рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ
<dependency> <groupId>org.testcontainers</groupId> <artifactId>testcontainers</artifactId> <version>1.12.3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.testcontainers</groupId> <artifactId>oracle-xe</artifactId> <version>1.12.3</version> <scope>test</scope> </dependency>
рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдЖрдк рдУрд░реЗрдХрд▓ рдбреАрдмреАрдПрдордПрд╕ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЗ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рднрдВрдбрд╛рд░ рдореЗрдВ рдЫрд╡рд┐ рд░рдЦрдиреЗ рдФрд░ рдПрдХ рдФрд░ рдбреЙрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред