あなたはICTSC専門学校の学生です。
新入生向けに学内向けCTFを開催するにあたって、アプリ開発チームとサーバ構築チームに分かれてCTFサーバの構築を行うことになりました。サーバ構築チームはあなたの後輩のA君が担当、あなたは両方を担当しています。
当初はサークルで余っていたラックサーバ上のVMで展開する予定でしたがA君が突然「VMじゃなくてDockerでやりたいです」と言い出しました。
A君は最近Dockerを触り始めたばかりなのですが、サーバの構成自体は簡単なので大丈夫だろうと判断し任せることになりました。
アプリ開発が終わり、A君に展開に必要なファイルを渡してDocker上で展開してもらったところコンパイルがうまくいかないと言われました。
これ以上時間をかけてしまうと後のスケジュールに影響してしまうため、A君に代わりあなたがトラブルシューティングを行うことにします。
原因を特定し、スコアボードが正常に表示されるようにDockerfileを修正してください。
スコアボードのソースコード及び docker-compose.yaml を変更してはいけない
MySQL及びRedisの構成ファイルを変更してはいけない
必ずアプリケーションのコンパイル・実行はコンテナ上で行い、原則ホストOSでパッケージをインストールしてはいけない
コンテナで使用しているイメージは変更してはいけない
WebAppの構成ファイルのみを修正し、他の構成ファイルは変更してはいけない
http://192.168.0.1:8080/index にアクセスしたときスコアボードが正常に表示される
IPアドレス: 192.168.0.1
ユーザー名: admin
パスワード: 248b1fa8f258
FROM golang:alpine
ADD ./Score /work
WORKDIR /work
RUN go build -tags netgo -o webapp main.go
FROM busybox
ENV GOPATH=/usr/local/bin/
COPY --from=builder /work/exec-webapp.sh /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/exec-webapp.sh", "/usr/local/bin/webapp"]
お世話になります。:thonk_spin.ex-large.rotate.parrot:です。
問題「コンテナが作れない」の解答を送らせていただきます。
FROM golang:alpine AS builder
RUN apk add --update --no-cache git
ADD ./Score /work
WORKDIR /work
RUN go get github.com/garyburd/redigo/redis \
github.com/gin-gonic/gin \
github.com/go-gorp/gorp \
github.com/go-sql-driver/mysql
RUN go build -tags netgo -o webapp main.go
FROM busybox
ENV GOPATH=/usr/local/bin/
COPY --from=builder /work/exec-webapp.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/exec-webapp.sh
COPY --from=builder /work/webapp /usr/local/bin/
COPY --from=builder /work/views /usr/local/bin/views
COPY --from=builder /work/themes /usr/local/bin/themes
ENTRYPOINT ["/usr/local/bin/exec-webapp.sh", "/usr/local/bin/webapp"]
goアプリのビルドの際に必要な依存パッケージがダウンロードできていなかった
go get
コマンドで必要な依存パッケージをダウンロードした(5~8行目)go get
コマンドを実行するためにRUN apk add --update --no-cache git
でgit
をインストールした(2行目)ビルドステージの名前が設定されていなかった
AS
句でbuilder
という名前を指定した(1行目)/usr/local/bin/exec-webapp.sh
に実行権限が付与されていなかった
chmod
コマンドを実行して付与した(14行目)実行イメージ内にアプリの実行に必要なファイル(webapp
バイナリ, views
ディレクトリ, themes
ディレクトリ)が配置されていなかった
COPY
命令で必要ファイルをビルドステージからコピーした(15~17行目)or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing