PyCharmでDockerコンテナに接続する

概要

最近ローカルの開発環境をVagrantからDocker+Docker Composeに変更しました。 しかし、コンテナに入る際にいちいち

# docker exec -it コンテナ名 /bin/bash

を打つのが面倒臭くなってきたので、 せっかくPyCharmを使っているのだからここからなんとかコンテナに入れないかと思い探してみたところ、できたのでメモを兼ねてブログに書いておきます。

環境

ホストOSmacOS Sierra バージョン 10.12.6
IDEPyCharm 2017.3.4 Professional Edition
DockerVersion 17.09.1-ce-mac42 (21090)

手順

コンテナが起動している状態でPyCharmのDockerビューを開き、 コンテナ名を右クリック→Execをクリック。 Createをクリックすると表示されるプロンプトに、

# /bin/bash

と入力すればExec: /bin/bashと表示され、 コマンドを入力しなくても勝手にコンテナに入ってくれます。

色々なコンテナを立ち上げている状態で毎回コマンドを打つのは面倒だったので、 便利な方法が見つかって良かったです。

Python3 + Selenium + Headless Chromeでブラウザを自動操作する(超入門編)

はじめに

最近、WebアプリケーションのE2Eテストやスクレイピングなどに興味があるので 、
seleniumを使ってブラウザの自動操作をできるよう環境を作ってみました。
同じような記事はたくさんありますが、備忘録も兼ねて書いておきます。

環境は以下の通りです。 MacからVagrant上のCentOS7にSSHで接続し、そちらからコマンドを実行しています。

ホストOSmacOS Sierra バージョン 10.12.6
ゲストOSCentOS Linux release 7.4.1708 (Core)
Python3.6.2
Chrome66.0.3355.0 dev
chromedriver2.3.6
IDEPyCharm 2017.3.1 Professional Edition

Seleniumインストール

# pip intall selenium

これでOKです。

Google ChromeをCentOS7にインストール

他の記事だとこれをやってなくてもできてるっぽかったのですが、 自分の環境ではこれをやらないと動きませんでした。

# yum install google-chrome

# google-chrome --version
Google Chrome 66.0.3355.0 dev

ChromeDriverインストール

ChromeDriver - WebDriver for Chromeからダウンロードします。 今回はGoogle Chrome 66なので、Supports Chrome v64-66と書いてあるChromeDriver 2.36をダウンロードしました。

# wget http://chromedriver.storage.googleapis.com/2.36/chromedriver_linux64.zip
# unzip chromedriver_linux64.zip 
# mv chromedriver /usr/local/bin

動かしてみる

Chromeを起動してGoogle検索し、検索結果を表示してついでにスクリーンショットを撮るプログラムを書いてみます。
検索してるもので趣味がダダ漏れになってるのは気にしないでください。
シロちゃんはいいぞ。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options


options = Options()

# ヘッドレスモードを有効にする
options.add_argument('--headless')

# ChromeのWebDriverオブジェクトを作成する。
driver = webdriver.Chrome(chrome_options=options)

driver.get('https://www.google.co.jp/')

assert 'Google' in driver.title

input_element = driver.find_element_by_name('q')
input_element.send_keys('電脳少女シロ')
input_element.send_keys(Keys.RETURN)

driver.set_window_size(1280, 720)
driver.save_screenshot('search_screen_shot.png')

for a in driver.find_elements_by_css_selector('h3 > a'):
    print(a.text)
    print(a.get_attribute('href'))

実行すると、以下のように検索結果がターミナルに出力されます。

f:id:len_prog:20180307233734p:plain

いい感じですね。

スクリーンショットもこんな感じで撮れます。 f:id:len_prog:20180308000527p:plain

とりあえずこれでSeleniumデビューできたので、色々使ってみようと思います。

参考にしたサイト

Selenium ChromeDriver & PythonをMacで動かす準備メモ

.gitignoreで指定したファイルがBitbucketの管理下から外れないときの解決策

はじめに

最近PyCharmで作ったPythonのプロジェクトをBitBucketで管理しているのですが、.gitignoreに指定したファイルが管理下から外れないという問題が起きたので、解決策をメモしておきます。

問題が発生した状況

最初にPyCharmのプロジェクトを、.ideaディレクトリも含め全てGitでのバージョン管理の対象にしました。
その後、.ideaの一部のファイルは管理したくないなと思い、.gitignoreの中で管理対象外のファイルを指定し、.gitignoreファイルをBitbucketのリモートリポジトリにプッシュしました。
その後リモートリポジトリを確認してみたところ、.gitignoreで指定したファイルがリモートリポジトリから消えていませんでした。

解決策

$ git rm --cached -r .idea

と打ち、その後にコミットしてリモートリポジトリにプッシュすることで、無事.gitignoreに指定したファイルが管理下から外れました。
というかStack Overflowの解答にあった解決法そのままなので、引用元を貼っておきます。

How do I ignore PyCharm configuration files in a git repository?

内容がないよう最初の記事からいきなり内容が薄いですが、ブログを書く練習がしたかったので許してください。

初投稿

初投稿です。

都内の下請け中小SIでプログラマのようなことをしてます。Lenと申します。

 

文章を書くのはあまり得意ではないのですが、最近読んだSOFT SKILLSという本にブログを書けとも書いてありましたし、インプットばかりしていてアウトプットしないのは良くないと思いましたし、Web系企業に転職するための材料にもしたいので、思い切ってブログを開設してみました。

 

このブログでは、以下のことを書いていこうと思っています。

・プログラミングなどについての備忘録、メモ

・読んだ本の感想

・見たアニメ、やったゲームについての感想

・転職活動について

・その他雑記

 

宜しくお願いします。