Skip to content

Commit 81832db

Browse files
authored
Merge pull request #97 from isucon/feature/development-docker
developmentディレクトリ以下に各言語実装に対応したMakefileなどを入れた
2 parents d3a9332 + 8ca2f0e commit 81832db

File tree

4 files changed

+142
-0
lines changed

4 files changed

+142
-0
lines changed

development/Makefile

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
.PHONY: install-initialdata init-mysql run-bench run-bench-noload
2+
3+
up/%:
4+
docker compose -f docker-compose-$*.yml -f docker-compose-common.yml up -d
5+
6+
down/%:
7+
docker compose -f docker-compose-$*.yml -f docker-compose-common.yml down -d
8+
9+
logs-webapp/%:
10+
docker compose -f docker-compose-$*.yml -f docker-compose-common.yml logs -f webapp
11+
12+
install-initialdata:
13+
docker compose -f docker-compose-common.yml cp ../initial_data/ bench:/home/isucon/
14+
15+
init-mysql:
16+
docker compose -f docker-compose-common.yml exec --workdir /docker-entrypoint-initdb.d mysql \
17+
bash -c 'cat 10_schema.sql 90_data.sql | mysql -uisucon -pisucon isuports'
18+
19+
run-bench:
20+
docker compose -f docker-compose-common.yml exec bench ./run_local.sh
21+
22+
run-bench-noload:
23+
docker compose -f docker-compose-common.yml exec bench ./run_local.sh -prepare-only

development/backend-go/Dockerfile

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
FROM golang:1.18.3-bullseye
2+
3+
WORKDIR /tmp
4+
ENV DEBIAN_FRONTEND=noninteractive
5+
RUN apt-get update && \
6+
apt-get -y upgrade && \
7+
apt-get install -y wget gcc g++ make sqlite3 && \
8+
wget -q https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb && \
9+
apt-get -y install ./mysql-apt-config_*_all.deb && \
10+
apt-get -y update && \
11+
apt-get -y install mysql-client
12+
13+
RUN mkdir -p /home/isucon/webapp/go
14+
WORKDIR /home/isucon/webapp/go
15+
16+
ENV GOPATH /home/isucon/go
17+
ENV PATH /home/isucon/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
18+
RUN go install github.com/cespare/reflex@latest
19+
20+
CMD [ "reflex", "-r", "(\\.go$|go\\.mod)", "-s", "go", "run", "cmd/isuports/main.go" ]
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
version: '3.0'
2+
3+
services:
4+
nginx:
5+
image: nginx:1.22
6+
volumes:
7+
- ../nginx/conf.d:/etc/nginx/conf.d
8+
- ../nginx/tls:/etc/nginx/tls
9+
#- ./public:/public
10+
ports:
11+
- "443:443"
12+
network_mode: host
13+
restart: always
14+
15+
mysql:
16+
cpus: 1
17+
mem_limit: 1g
18+
image: mysql/mysql-server:8.0.29
19+
environment:
20+
- "MYSQL_ROOT_HOST=%"
21+
- "MYSQL_ROOT_PASSWORD=root"
22+
volumes:
23+
- ../webapp/sql/admin/:/docker-entrypoint-initdb.d
24+
- mysql:/var/lib/mysql
25+
ports:
26+
- 13306:3306
27+
restart: always
28+
29+
blackauth:
30+
build:
31+
context: ../
32+
dockerfile: ./development/backend-go/Dockerfile
33+
ports:
34+
- "3001:3001"
35+
init: true
36+
restart: always
37+
volumes:
38+
- ../:/home/isucon
39+
working_dir: /home/isucon/blackauth
40+
command:
41+
- /usr/local/go/bin/go
42+
- run
43+
- main.go
44+
45+
bench:
46+
build: ../webapp
47+
stdin_open: true
48+
tty: true
49+
environment:
50+
ISUCON_JWT_KEY_FILE: ./isuports.pem
51+
volumes:
52+
- ../:/home/isucon
53+
- tenant_db:/home/isucon/webapp/tenant_db
54+
- initial_data:/home/isucon/initial_data
55+
- gopkg:/home/isucon/go/pkg
56+
network_mode: host
57+
working_dir: /home/isucon/bench
58+
command:
59+
- "bash"
60+
- "-c"
61+
- "sleep infinity"
62+
63+
volumes:
64+
mysql:
65+
gopkg:
66+
tenant_db:
67+
initial_data:

development/docker-compose-go.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
version: '3.0'
2+
3+
services:
4+
webapp:
5+
cpus: 1
6+
mem_limit: 1g
7+
build:
8+
context: ../
9+
dockerfile: ./development/backend-go/Dockerfile
10+
environment:
11+
ISUCON_DB_HOST: mysql
12+
ISUCON_DB_PORT: 3306
13+
ISUCON_DB_USER: isucon
14+
ISUCON_DB_PASSWORD: isucon
15+
ISUCON_DB_NAME: isuports
16+
ISUCON_ADMIN_HOSTNAME: admin.t.isucon.dev
17+
ports:
18+
- "3000:3000"
19+
links:
20+
- mysql
21+
volumes:
22+
- ../webapp:/home/isucon/webapp
23+
- tenant_db:/home/isucon/webapp/tenant_db
24+
- initial_data:/home/isucon/initial_data
25+
- gopkg:/home/isucon/go/pkg
26+
init: true
27+
restart: always
28+
29+
volumes:
30+
gopkg:
31+
tenant_db:
32+
initial_data:

0 commit comments

Comments
 (0)